/*  c2ps - C/C++ to Postscript Converter
    Copyright (C)  1995-1997  Dmitri Shtilman, Dmitri Makarov
 
c2ps is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

c2ps is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with c2ps; see the file COPYING.  If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  

Send your comments, questions and bug reports to c2ps@geocities.com
*/



























#line 2 "c2ps.c"
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5

#include <stdio.h>


/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus
#ifndef __cplusplus
#define __cplusplus
#endif
#endif


#ifdef __cplusplus

#include <stdlib.h>
#include <unistd.h>

/* Use prototypes in function declarations. */
#define YY_USE_PROTOS

/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST

#else	/* ! __cplusplus */

#if __STDC__

#define YY_USE_PROTOS
#define YY_USE_CONST

#endif	/* __STDC__ */
#endif	/* ! __cplusplus */

#ifdef __TURBOC__
 #pragma warn -rch
 #pragma warn -use
#include <io.h>
#include <stdlib.h>
#define YY_USE_CONST
#define YY_USE_PROTOS
#endif

#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif


#ifdef YY_USE_PROTOS
#define YY_PROTO(proto) proto
#else
#define YY_PROTO(proto) ()
#endif

/* Returned upon end-of-file. */
#define YY_NULL 0

/* Promotes a possibly negative, possibly signed char to an unsigned
 * integer for use as an array index.  If the signed char is negative,
 * we want to instead treat it as an 8-bit unsigned char, hence the
 * double cast.
 */
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)

/* Enter a start condition.  This macro really ought to take a parameter,
 * but we do it the disgusting crufty way forced on us by the ()-less
 * definition of BEGIN.
 */
#define BEGIN yy_start = 1 + 2 *

/* Translate the current start state into a value that can be later handed
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 * compatibility.
 */
#define YY_START ((yy_start - 1) / 2)
#define YYSTATE YY_START

/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)

/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart( yyin )

#define YY_END_OF_BUFFER_CHAR 0

/* Size of default input buffer. */
#define YY_BUF_SIZE 16384

typedef struct yy_buffer_state *YY_BUFFER_STATE;

extern int yyleng;
extern FILE *yyin, *yyout;

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2

/* The funky do-while in the following #define is used to turn the definition
 * int a single C statement (which needs a semi-colon terminator).  This
 * avoids problems with code like:
 *
 * 	if ( condition_holds )
 *		yyless( 5 );
 *	else
 *		do_something_else();
 *
 * Prior to using the do-while the compiler would get upset at the
 * "else" because it interpreted the "if" statement as being all
 * done when it reached the ';' after the yyless() call.
 */

/* Return all but the first 'n' matched characters back to the input stream. */

#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
		*yy_cp = yy_hold_char; \
		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
		} \
	while ( 0 )

#define unput(c) yyunput( c, yytext_ptr )

/* The following is because we cannot portably get our hands on size_t
 * (without autoconf's help, which isn't available because we want
 * flex-generated scanners to compile on their own).
 */
typedef unsigned int yy_size_t;


struct yy_buffer_state
	{
	FILE *yy_input_file;

	char *yy_ch_buf;		/* input buffer */
	char *yy_buf_pos;		/* current position in input buffer */

	/* Size of input buffer in bytes, not including room for EOB
	 * characters.
	 */
	yy_size_t yy_buf_size;

	/* Number of characters read into yy_ch_buf, not including EOB
	 * characters.
	 */
	int yy_n_chars;

	/* Whether we "own" the buffer - i.e., we know we created it,
	 * and can realloc() it to grow it, and should free() it to
	 * delete it.
	 */
	int yy_is_our_buffer;

	/* Whether this is an "interactive" input source; if so, and
	 * if we're using stdio for input, then we want to use getc()
	 * instead of fread(), to make sure we stop fetching input after
	 * each newline.
	 */
	int yy_is_interactive;

	/* Whether we're considered to be at the beginning of a line.
	 * If so, '^' rules will be active on the next match, otherwise
	 * not.
	 */
	int yy_at_bol;

	/* Whether to try to fill the input buffer when we reach the
	 * end of it.
	 */
	int yy_fill_buffer;

	int yy_buffer_status;
#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
	/* When an EOF's been seen but there's still some text to process
	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
	 * shouldn't try reading from the input source any more.  We might
	 * still have a bunch of tokens to match, though, because of
	 * possible backing-up.
	 *
	 * When we actually see the EOF, we change the status to "new"
	 * (via yyrestart()), so that the user can continue scanning by
	 * just pointing yyin at a new input file.
	 */
#define YY_BUFFER_EOF_PENDING 2
	};

static YY_BUFFER_STATE yy_current_buffer = 0;

/* We provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state".
 */
#define YY_CURRENT_BUFFER yy_current_buffer


/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;

static int yy_n_chars;		/* number of characters read into yy_ch_buf */


int yyleng;

/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
static int yy_init = 1;		/* whether we need to initialize */
static int yy_start = 0;	/* start state number */

/* Flag which is used to allow yywrap()'s to do buffer switches
 * instead of setting up a fresh yyin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

void yyrestart YY_PROTO(( FILE *input_file ));

void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
void yy_load_buffer_state YY_PROTO(( void ));
YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )

YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));

static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
static void yy_flex_free YY_PROTO(( void * ));

#define yy_new_buffer yy_create_buffer

#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! yy_current_buffer ) \
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
	yy_current_buffer->yy_is_interactive = is_interactive; \
	}

#define yy_set_bol(at_bol) \
	{ \
	if ( ! yy_current_buffer ) \
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
	yy_current_buffer->yy_at_bol = at_bol; \
	}

#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)


#define YY_USES_REJECT
typedef unsigned char YY_CHAR;
FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
typedef int yy_state_type;
extern char *yytext;
#define yytext_ptr yytext

static yy_state_type yy_get_previous_state YY_PROTO(( void ));
static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
static int yy_get_next_buffer YY_PROTO(( void ));
static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
	yytext_ptr = yy_bp; \
	yytext_ptr -= yy_more_len; \
	yyleng = (int) (yy_cp - yytext_ptr); \
	yy_hold_char = *yy_cp; \
	*yy_cp = '\0'; \
	yy_c_buf_p = yy_cp;

#define YY_NUM_RULES 24
#define YY_END_OF_BUFFER 25
static yyconst short int yy_acclist[450] =
    {   0,
        6,    6,    1,    1,   25,   23,   24,   22,   24,   23,
       24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
       24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
       24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
       24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
       24,   23,   24,   23,   24,   23,   24,   23,   24,   23,
       24,    6,   24,    7,   24,   24,   12,   22,   24,   23,
       24,   23,   24,16397,   23,   24,16397,   23,   24,16397,
       23,   24,16397,   23,   24,16397,   23,   24,16397,   23,
       24,16397,   23,   24,16397,   23,   24,16397,   23,   24,

    16397,   23,   24,16397,   23,   24,16397,   23,   24,16397,
       23,   24,16397,   23,   24,16397,   23,   24,16397,   23,
       24,16397,   23,   24,16397,   23,   24,16397,   23,   24,
    16397,   23,   24,16397,    1,   24,    2,   24,    3,    4,
        9,   10,    6,    8,    8,    5,   11,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,    1,    3,    3,    9,

        9,   10,   19,   21,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,   19,   19,   19,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,   21,   21,   21,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,   18,   20,   18,
        3,   18,   18,   20,    3,   20,   20,   18,   18,   20,
       20,    9,   10,   15, 8205, 8205, 8205,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,

    16397,16397,16397,16397,16397,16397,16397,16397,   15,   15,
       15,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
       14,   14,    3,   14,   14,   14,   14,   10,   17,16397,
    16397,16397,   17,   17,   17,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,   16,
       16,    3,   16,   16,   16,   16,16397,16397,16397,16397,

    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
    16397,16397,16397,16397,16397,16397,16397,16397,16397
    } ;

static yyconst short int yy_accept[1433] =
    {   0,
        1,    1,    1,    2,    3,    3,    3,    3,    3,    4,
        5,    6,    8,   10,   12,   14,   16,   18,   20,   22,
       24,   26,   28,   30,   32,   34,   36,   38,   40,   42,
       44,   46,   48,   50,   52,   54,   56,   58,   60,   62,
       64,   66,   67,   70,   72,   75,   78,   81,   84,   87,
       90,   93,   96,   99,  102,  105,  108,  111,  114,  117,
      120,  123,  126,  129,  132,  135,  137,  139,  139,  139,
      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
      139,  139,  139,  139,  139,  139,  139,  139,  139,  140,
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,

      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
      140,  140,  140,  141,  142,  142,  142,  142,  143,  143,
      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
      143,  143,  143,  143,  143,  143,  143,  144,  145,  146,
      147,  148,  148,  148,  148,  149,  149,  150,  151,  152,

      153,  154,  155,  156,  157,  158,  159,  160,  161,  162,
      163,  164,  165,  166,  167,  168,  169,  170,  171,  172,
      173,  174,  175,  176,  177,  178,  179,  180,  181,  182,
      183,  184,  185,  186,  187,  188,  189,  190,  191,  192,
      193,  194,  195,  196,  197,  198,  198,  198,  198,  198,
      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
      198,  198,  198,  198,  198,  199,  199,  199,  199,  199,

      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
      199,  199,  199,  199,  199,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  201,  202,  202,  203,  203,

      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
      203,  203,  203,  204,  204,  204,  204,  204,  204,  204,
      204,  204,  204,  204,  204,  204,  204,  204,  204,  204,
      204,  205,  205,  205,  205,  205,  205,  205,  205,  205,
      205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
      205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
      205,  205,  205,  206,  207,  208,  209,  210,  211,  212,
      213,  214,  215,  216,  217,  218,  219,  220,  221,  222,
      223,  224,  225,  226,  227,  228,  229,  230,  231,  232,
      233,  234,  235,  236,  237,  238,  239,  240,  241,  242,

      243,  244,  245,  246,  247,  248,  249,  250,  251,  252,
      253,  254,  255,  256,  257,  258,  259,  260,  261,  262,
      263,  264,  265,  266,  267,  268,  268,  268,  268,  268,
      268,  268,  268,  268,  268,  268,  268,  268,  268,  269,
      269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
      269,  269,  269,  269,  269,  269,  269,  270,  270,  270,
      270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
      270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
      270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
      270,  270,  270,  270,  270,  270,  270,  270,  271,  273,

      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
      274,  274,  274,  274,  274,  274,  274,  274,  275,  277,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
      278,  279,  280,  280,  280,  280,  280,  280,  280,  280,
      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
      281,  282,  282,  282,  282,  282,  282,  282,  282,  282,
      282,  282,  282,  282,  282,  282,  282,  282,  282,  282,

      282,  282,  282,  282,  282,  282,  282,  282,  282,  283,
      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
      284,  284,  284,  284,  284,  284,  284,  284,  284,  284,
      284,  285,  285,  285,  285,  285,  285,  285,  285,  285,
      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
      285,  286,  287,  288,  288,  289,  289,  290,  291,  292,
      293,  294,  295,  296,  297,  298,  299,  300,  301,  302,
      303,  304,  305,  306,  307,  308,  309,  310,  311,  312,
      313,  314,  315,  316,  317,  318,  319,  320,  321,  322,

      323,  324,  325,  326,  327,  328,  329,  330,  331,  332,
      333,  334,  335,  336,  337,  338,  339,  340,  341,  341,
      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
      341,  341,  341,  341,  341,  341,  341,  341,  341,  342,
      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
      342,  342,  342,  342,  342,  342,  342,  342,  342,  343,
      345,  346,  346,  346,  346,  346,  346,  346,  346,  346,

      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
      346,  347,  348,  348,  348,  348,  348,  348,  348,  348,
      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
      348,  348,  349,  349,  349,  350,  350,  350,  350,  350,
      350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
      350,  350,  350,  350,  350,  350,  350,  350,  350,  350,

      350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
      350,  351,  351,  352,  353,  354,  355,  356,  357,  358,
      359,  360,  361,  362,  363,  364,  365,  366,  367,  368,
      369,  370,  371,  372,  373,  374,  375,  376,  377,  378,
      379,  380,  381,  382,  383,  384,  385,  386,  387,  388,
      389,  390,  390,  390,  391,  391,  391,  391,  391,  391,
      391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
      391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
      391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
      391,  392,  394,  395,  395,  395,  395,  395,  395,  395,

      395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
      395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
      395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
      396,  397,  397,  397,  397,  397,  397,  397,  397,  397,
      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
      397,  397,  397,  397,  397,  397,  398,  399,  400,  401,
      402,  403,  404,  405,  406,  407,  408,  409,  410,  411,

      412,  413,  414,  415,  416,  417,  417,  417,  417,  417,
      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
      417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
      418,  419,  420,  421,  422,  423,  424,  425,  426,  427,
      428,  429,  430,  431,  431,  431,  431,  431,  431,  431,

      431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
      431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
      431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
      431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
      431,  431,  432,  433,  434,  435,  436,  437,  437,  437,
      437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
      437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
      438,  439,  440,  441,  441,  441,  441,  441,  441,  441,
      441,  441,  441,  441,  441,  441,  441,  441,  441,  442,
      443,  444,  444,  444,  444,  444,  444,  444,  444,  444,

      444,  444,  444,  445,  446,  446,  446,  446,  446,  446,
      446,  446,  447,  447,  447,  447,  447,  448,  448,  448,
      448,  448,  449,  449,  449,  449,  449,  450,  450,  450,
      450,  450
    } ;

static yyconst int yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    1,    4,    5,    1,    1,    1,    6,    7,
        8,    9,    1,   10,    1,    1,   11,   12,   12,   12,
       12,   12,   12,   12,   12,   12,   12,   13,   14,    1,
        1,    1,    1,    1,   15,   15,   15,   15,   15,   15,
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        1,   16,    1,    1,   17,    1,   18,   19,   20,   21,

       22,   23,   24,   25,   26,   15,   27,   28,   29,   30,
       31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
       41,   42,   43,    1,   43,   44,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1
    } ;

static yyconst int yy_meta[45] =
    {   0,
        1,    2,    3,    4,    5,    4,    6,    1,    7,    1,
        1,    8,    9,   10,   11,   12,   13,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
       11,   11,   11,   11,   11,   11,   14,   11,   11,   11,
       11,   11,    4,   15
    } ;

static yyconst short int yy_base[1458] =
    {   0,
        0,   44,    9,   12,   88,   14,  132,  176, 3123, 3122,
     3124,  203,    0,  243, 3127,  287,   11,   21, 3121,    1,
        1,   75,   83,   79,    6, 3091,   85, 3090, 3083,   11,
        7,   76, 3097,   86,  125,   86,   92,  129, 3087,    0,
     3127,  117,    0,  114,  149,  330,  134,  350,  314,  322,
      338,  346,  311,  353,  137,  364,  364,  305,  375,  388,
      406,  372,  385,  409,  418,    0, 3127,  400,  127,  375,
      411,  426,  433, 3086,   97, 3085, 3078,  386,  123,  136,
     3092,  432,  438,  323,  395,  425, 3082,  462, 3127,  466,
      473,  478,  488,  483,  447,  489, 3081,  324, 3080, 3073,

      500,  196,  336, 3087,  500,  507,  443,  502,  510, 3077,
      531,  230,  507,  512,  554,  542,  546,  559, 3076,  504,
     3075, 3068,  566,  442,  342, 3082,  555,  567,  510,  569,
      578, 3072, 3127, 3086,   23, 3099, 3098,    3, 3078, 3069,
     3061, 3060, 3064, 3072,  569, 3075, 3074,  577,  586, 3054,
     3060, 3054, 3051,  479, 3059, 3055, 3051, 3058, 3047, 3045,
      574, 3051, 3044, 3050, 3039, 3041, 3054, 3058,  585, 3055,
      589, 3042,  554,  594, 3046, 3042,  592,  580, 3038,  521,
     3043, 3034,  594, 3042, 3040, 3031,    0, 3127,  618, 3127,
     3127,  416,  628, 3056,  602, 3050,  603,  613,  616,  619,

      627,  637,  633,  643,  647,  646,  662,  699,  656,  659,
      681,  687,  697,  698,  710,  711,  719, 3025,  722,  730,
      733,  742,  743,  751,  754,  791,  780,  784,  800,  792,
      807,  820,  783,  811,  826,  829,  837,  845,  851,  855,
      865,  869,  875,  879,    0, 3040, 3031, 3023, 3022, 3026,
     3034,  609, 3037, 3036,  658,  643, 3016, 3022, 3016, 3013,
      587, 3021, 3017, 3013, 3020, 3009, 3007,  702, 3013, 3006,
     3012, 3001, 3003, 3016, 3020,  695, 3017,  738, 3004,  788,
      661, 3008, 3004,  705,  791, 3000,  740, 3005, 2996,  608,
     3004, 3002, 2993,    0,    0, 3005, 2996, 2988, 2987, 2991,

     2999,  843, 3002, 3001,  854,  762,  916, 2988, 2982, 2979,
      811, 2987, 2983, 2979, 2986, 2975, 2973,  725, 2979, 2972,
     2978, 2967, 2969, 2982,  960,  827, 2984,  872, 2971,  809,
      680, 2975, 2971,  839,  866, 2967,  902, 2972, 2963,  905,
     2971, 2969, 2960,    0,    0,  881, 2972, 2963, 2955, 2954,
     2958, 2966,  899, 2969, 2968,  909,  913, 1004, 2955, 2949,
     2946,  879, 2954, 2950, 2946, 2953, 2942, 2940,  840, 2946,
     2939, 2945, 2934, 2936, 2949, 1048,  914, 2951,  918, 2938,
      923,  686, 2942, 2938,  917,  909, 2934,  922, 2939, 2930,
      930, 2938, 2936, 2927, 2944,  644,  970,  973, 2956, 2941,

     2926,  765, 2928, 2937, 2932, 2933, 2918, 2916, 2918,  943,
     2931, 2926, 3127, 2928, 2928, 2923, 2915, 2915, 2920, 2906,
     2922, 2917, 2907, 2911,    0, 2912, 2917, 2912, 2916, 2898,
     3127, 2909, 2892, 2893, 2900, 2901, 2896, 2888, 2890, 2893,
     2900, 2885, 2883, 2883, 2886, 2882, 2885, 2893, 2892, 2882,
     2886, 2881, 2874, 2888, 2890, 2889, 2878, 2888,  971, 2896,
     1091,  981, 2886,  957,  991, 1003, 1005,  963, 1007, 1033,
      960, 1008, 1036, 1051, 1052, 1077, 2894, 2888, 1081, 1084,
     1087, 1048, 1075, 1093, 1090, 1108, 1107, 1116, 1122, 1159,
     1147, 1146, 1119, 2883, 1155, 1184, 2891, 2885, 1158, 1169,

     1175, 1185, 1188, 1189, 1197, 1201, 1207, 1211, 1215, 1219,
     1223, 1231, 1227, 1239, 1243, 1249, 1252, 1255, 1258, 1261,
     1273, 1281, 1282, 1285, 2880, 2879, 2864, 1008, 2866, 2875,
     2870, 2871, 2856, 2854, 2856,  966, 2869, 2864, 3127, 2866,
     2866, 2861, 2853, 2853, 2858, 2844, 2860, 2855, 2845, 2849,
        0, 2850, 2855, 2850, 2854, 2836, 3127, 2847, 2830, 2831,
     2838, 2839, 2834, 2826, 2828, 2831, 2838, 2823, 2821, 2821,
     2824, 2820, 2823, 2831, 2830, 2820, 2824, 2819, 2812, 2826,
     2828, 2827, 2816, 2826, 2825, 2810, 1178, 2812, 2821, 2816,
     2817, 2802, 2800, 2802, 1040, 2815, 2810,    0, 3127, 1128,

     2812, 2812, 2807, 2799, 2799, 2804, 2790, 2806, 2801, 2791,
     2795, 1322, 2796, 2801, 2796, 2800, 2782,    0, 3127, 1132,
     2793, 2776, 2777, 2784, 2785, 2780, 2772, 2774, 2777, 2784,
     2769, 2767, 2767, 2770, 2766, 2769, 2777, 2776, 2766, 2770,
     2765, 2758, 2772, 2774, 2773, 2762, 2772, 2771, 2756, 1190,
     2758, 2767, 2762, 2763, 2748, 2746, 2748, 1104, 2761, 2756,
        0,  975, 2758, 2758, 2753, 2745, 2745, 2750, 2736, 2752,
     2747, 2737, 2741, 1366, 2742, 2747, 2742, 2746, 2728,    0,
     1223, 2739, 2722, 2723, 2730, 2731, 2726, 2718, 2720, 2723,
     2730, 2715, 2713, 2713, 2716, 2712, 2715, 2723, 2722, 2712,

     2716, 2711, 2704, 2718, 2720, 2719, 2708, 2718, 2718,    0,
     2711, 2702, 2697,    0, 2703, 2704, 2693, 2699, 2690, 2699,
     2687, 2687, 2694, 2691, 2693, 2683, 2692, 2675, 2674, 2672,
     3127, 2682, 2664, 2675, 2678, 2659, 2673, 2667, 2660, 2648,
     2640, 2640, 2637, 2648, 2638, 2641, 2644, 2641, 2625, 2612,
     2633, 1313, 2619, 2624, 2623, 2609, 2609, 2603, 2614, 2604,
     2617, 1409, 3127, 1302, 1299, 1339, 1315, 1314, 1323, 1452,
     1351, 1359, 1324, 1362, 1365, 1392, 1368, 1396, 1393, 1405,
     1411, 1437, 1414, 1440, 1408, 1443, 1479, 2615, 2607, 1464,
     1454, 1463, 1472, 1473, 1486, 1483, 1489, 1492, 1495, 1503,

     1506, 1517, 1514, 1520, 1528, 1536, 1532, 1540, 2600, 1555,
     1552, 1556, 1564, 1565, 1568, 1576, 1585, 1586, 2586, 2577,
     2572,    0, 2578, 2579, 2568, 2574, 2565, 2572, 2558, 2556,
     2561, 2553, 2554, 2543, 2552, 2528, 2533, 2529, 3127, 2539,
     2518, 2528, 2529, 2511, 2519, 2513, 2506, 2494, 2484, 2485,
     2481, 2494, 2484, 2488, 2493, 2479, 2456, 2430, 2447, 1538,
     2432, 2435, 2433, 2419, 2394, 2392, 2399, 2397, 2396, 2387,
     2382, 1623, 2388, 2389, 2378, 2384, 2311,  103,  126,  254,
      310,  332,  365,  404,  437,  426,  435,  459,    0, 3127,
     1175,  476,  486,  536,  557,  566,  733,  794,  819,  827,

      885,  915,  916,  933,  965,  973, 1004, 1009, 1004,  996,
     1029, 1588, 1023, 1036, 1080, 1069, 1072, 1079, 1111, 1128,
     1133, 1128, 1140, 1667, 1167, 1173, 1165, 1173, 1180, 1191,
     1191, 1194, 1212, 1214, 1221, 1221, 1245, 1236, 1245, 1247,
        0, 1441, 1288, 1274, 1292, 1303, 1294, 1322, 1325, 1322,
     1320, 1320, 1328, 1327, 1342, 1340, 1359, 1367, 1371, 1365,
     1365, 1389, 1614, 1377, 1384, 1396, 1387, 1403, 1416, 1442,
     1447,    0, 1446, 1466, 3127, 1471, 1467, 1483, 1490, 1492,
     1491, 1508, 1504, 1514, 1531, 1533, 1540, 1541, 1542, 1547,
     1564, 1576, 1561, 1590, 1587, 1598, 1605, 1618, 1605, 1617,

     1625, 1623, 1625, 1629, 1618, 1631, 1624, 1634, 1619, 1651,
     1653, 1659, 1649, 1664, 1685, 1649, 1646, 1646, 1660, 1672,
     1682, 1683, 1695, 1694, 1698, 1706, 1712, 1709, 1718, 1721,
     1727, 1730, 1739, 1748, 1745, 1749, 1757, 1767, 1766, 1770,
     1776, 1784, 1780, 1794, 1797, 1805, 1806, 1815, 1818, 1821,
     1824, 1631, 1644, 3127, 1655, 1659, 1663, 1671, 1674, 1680,
     1688, 1685, 1695, 1700, 1695, 1694, 1705, 1704, 1709, 1732,
     1741, 1734, 1750, 1743, 1756, 1768, 1773, 1759, 1774, 1790,
     1798, 1801, 1807, 1796, 1810, 1804, 1820, 1806, 1813, 1826,
        0, 3127, 1859, 1832, 1830, 1836, 1843, 1844, 1841, 1848,

     1839, 1849, 1849, 1844, 1841, 1841, 1839, 1840, 1857, 1858,
     1843, 1858, 1851, 1861, 1860, 1864, 1849, 1861, 1869, 1866,
     1868, 1872, 1861, 1874, 1867, 1877, 1862, 1863, 1876,    0,
     1892, 1882, 1870, 1873, 1880, 1881, 1878, 1885, 1876, 1886,
     1887, 1882, 1879, 1879, 1877, 1878, 1895, 1896, 1881, 1896,
     1889, 1899, 1898, 1902, 1887, 1899, 1907, 1904, 1906, 1910,
     1899, 1912, 1905, 1915, 1900, 1914, 1898, 1900, 1917, 1912,
     1917, 1922, 1910, 1920, 1907, 1922, 1911, 1929, 1911, 1925,
     1920, 1928, 1923, 1924, 1917, 1934, 1925, 1931, 1943, 1944,
     1953, 1947, 1956, 1967, 1964, 1973, 1977, 1939, 1983, 1986,

     1995, 2004, 2001, 2005, 2013, 1937, 1921, 1923, 1952, 1950,
     1963, 1974, 1965, 1976, 1969, 1984, 1981, 2000, 1986, 2004,
     1999, 2015, 2016, 2017, 2010, 2027, 2014, 2016, 2033, 2028,
     2033, 2038, 2026, 2036, 2023, 2038, 2027, 2045, 2027, 2041,
     2036, 2044, 2039, 2040, 2033, 2050, 2034, 2036, 2053, 2048,
     2053, 2058, 2046, 2056, 2043, 2058, 2047, 2065, 2047, 2061,
     2056, 2064, 2059, 2060, 2053, 2072, 2069, 2075, 2057, 2074,
     2061, 2074, 2063, 2066, 2079, 2078, 2079, 2081, 2081, 2086,
     2083, 2089, 2092, 2095, 2077, 2109, 2103, 2113, 2121, 2112,
     2130, 2133, 2139, 2090, 2087, 2093, 2081, 2115, 2102, 2131,

     2121, 2125, 2139, 2140, 2142, 2145, 2149, 2154, 2151, 2158,
     2141, 2158, 2145, 2158, 2147, 2150, 2163, 2162, 2163, 2165,
     2165, 2170, 2167, 2173, 2155, 2172, 2159, 2172, 2161, 2164,
     2177, 2176, 2177, 2179, 2179, 2167, 2183, 2182, 2184, 2172,
     2189, 2178, 2189, 2188, 2199, 2198, 2209, 2176, 2192, 2192,
     2195, 2183, 2203, 2187, 2210, 2209, 2216, 2204, 2222, 2206,
     2222, 2221, 2224, 2213, 2230, 2213, 2232, 2229, 2217, 2223,
     2236, 2233, 2227, 2220, 2243, 2243, 2232, 2233, 2254, 2252,
     2240, 2240, 2259, 2256, 2244, 2245, 2245, 2246, 2253, 2256,
     2259, 2249, 2249, 2251, 2262, 2262, 2263, 2265, 2265, 2266,

     2267, 2287, 2275, 2289, 2271, 2291, 2273, 2296, 2278, 2298,
     2296, 2297, 2298, 2300, 2301, 2304, 2305, 2307, 2310, 2311,
     2295, 2301, 2298, 2302, 2304, 2305, 2313, 2308, 2309, 2310,
     3127, 2350, 2365, 2380, 2395, 2409, 2423, 2438, 2452, 2466,
     2481, 2496, 2510, 2524, 2539, 2554, 2569, 2584, 2598, 2612,
     2627, 2641, 2656, 2664, 2678, 2692, 2706
    } ;

static yyconst short int yy_def[1458] =
    {   0,
     1432, 1431, 1433, 1433, 1432,    2, 1434, 1431, 1435, 1435,
     1431, 1431,   12, 1431, 1431, 1431,   12,   12, 1436, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1437,
     1431, 1438,   12,   12, 1439, 1439,   46,   46,   46,   46,
       48,   48,   46,   46,   46,   48,   46,   46,   46,   46,
       46,   46,   46,   46,   46, 1440, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431,   14, 1431,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,

       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       16, 1441,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111, 1431, 1442, 1431, 1436, 1436, 1443, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1444,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1444,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1445, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1437, 1431, 1431, 1431,
     1431, 1431, 1431, 1446,   46, 1431,   46,   46,   46,   46,

       46,   46,   46,   46,   46,   46,   46, 1439,   46,   46,
       46,   46,   46,   46,   46,   46,   46,  208,   46,   46,
       46,   46,   46,   46,   46, 1439,   46,   46,   60,   46,
       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
       46,   46,   46,   46, 1440, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1447, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1447, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1448, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431,   88,   88,   88,   88,   88,   88,   88,

       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,  307,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,  111,  111, 1441,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  358,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111, 1442, 1442, 1449, 1443, 1431, 1445,

     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1450, 1431, 1431, 1431, 1445, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1445, 1431, 1446,
     1451, 1452,  226,   46,   48,   48,   48,   46,   46,   46,
       46,   46,   46,   46,   46, 1431, 1446, 1431,   46,   46,
       46,   46,   46,   46,   46,   46,   46,   46,   46, 1439,
       46,   46,   46,  226,   46, 1431, 1446, 1431,   46,   46,

       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
       46,   46,   46,   46,  226, 1448, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1453, 1431, 1431, 1431, 1448, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1448,  325,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88, 1431,   88,

       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,  325,   88,   88, 1431,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,  325,  376,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111, 1441,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  376,  111,  111,
     1441,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,

      111,  111,  111,  111,  111,  111,  111,  376, 1442, 1454,
     1431, 1431, 1431, 1455, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1445, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1446, 1451, 1431, 1452, 1456, 1452,   46,   46,   46, 1439,
       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
       46,   46,   46,   46,   46,   46, 1431, 1446, 1431,   46,
       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,

       46,   46,   46,   46,   46,   46,   46,   46,  226,   46,
       46,   46,   46,   46,   46,   46,   46,   46, 1431, 1431,
     1431, 1457, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1448, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88, 1431,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,

       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
      325,   88,   88,   88,   88,   88,   88,   88,   88,   88,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111, 1441,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  376,  111,  111,  111,  111,  111,  111,  111,  111,
      111, 1454, 1431, 1431, 1431, 1450, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,

     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1456, 1452,   46,   46, 1431, 1446, 1431,  490,   46,   46,
       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
       46, 1431, 1431, 1431, 1453, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,   88,   88,
       88, 1431,   88,  612,   88,   88,   88,   88,   88,   88,

       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,  111,  111,  111,
     1441,  674,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1450, 1431, 1431,
     1431, 1431, 1431, 1431, 1431,   46,   46,   46,   46,   46,
       46,   46,   46,   46,   46,   46,   46,  490,   46,   46,

       46,   46,   46,   46,   46, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1453, 1431, 1431,
     1431, 1431, 1431, 1431, 1431,   88,   88,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,  612,   88,   88,
       88,   88,   88,   88,   88,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111,  111,  111,  674,  111,  111,
      111,  111,  111,  111,  111, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,   46,
       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
       46,   46,   46, 1431, 1431, 1431, 1431, 1431, 1431, 1431,

     1431, 1431, 1431, 1431, 1431, 1431, 1431,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
       88,  111,  111,  111,  111,  111,  111,  111,  111,  111,
      111,  111,  111,  111,  111, 1431, 1431, 1431, 1431, 1431,
     1431,   46,   46,   46,   46,   46,   46, 1431, 1431, 1431,
     1431, 1431, 1431,   88,   88,   88,   88,   88,   88,  111,
      111,  111,  111,  111,  111, 1431, 1431, 1431, 1431,   46,
       46,   46,   46, 1431, 1431, 1431, 1431,   88,   88,   88,
       88,  111,  111,  111,  111, 1431, 1431, 1431,   46,   46,
       46, 1431, 1431, 1431,   88,   88,   88,  111,  111,  111,

     1431, 1431,   46,   46, 1431, 1431,   88,   88,  111,  111,
     1431,   46, 1431,   88,  111, 1431,   46, 1431,   88,  111,
     1431,   46, 1431,   88,  111, 1431,   46, 1431,   88,  111,
        0, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431
    } ;

static yyconst short int yy_nxt[3172] =
    {   0,
       12,   12,   13,   14,  397,   16,   12,   12,   12,   12,
       17,   41,   12,   12,   41,   12,   43,   42,  399,  133,
       42,  134,  135,  155,  135,  136,  142,  136,  164,   44,
      139,  143,  165,  156,  144,  140,  157,  141,  167,  158,
      168,  166,   12,   12,   12,   18,   13,   14,   19,   16,
       12,   12,   12,   12,   17,   15,   12,   12,   15,   12,
       15,   20,   21,   22,   23,   24,   25,   26,   15,   27,
       15,   28,   29,   30,   31,   32,   15,   33,   34,   35,
       36,   37,   38,   39,   15,   15,   12,   12,   12,   12,
       43,   14,  145,   16,   12,   12,   12,   12,   17,  146,

       12,   12,  147,   44,  149,  148,  152,  160,  153,  169,
      172,  173,  170,  150,  161,  180,  191,  182,  154,  267,
      181,  174,  183,  151,  175,  189,  268,  190, 1095,  192,
       12,   12,   12,   12,   13,   14,   15,   16,   12,   12,
       12,   12,   17,   15,   12,   12,  176,   12,  184,  177,
      193,  193,  249,  185,  274,  194,  275,  250,  178,  200,
      251,  196, 1096,  195,  201,  179,  195,  202,  195,  276,
      195,  195,  277,  221,   12,   12,   12,   18,   13,   14,
       19,   16,   12,   12,   12,   12,   17,   15,   12,   12,
       45,   12,   45,   46,   47,   48,   49,   50,   51,   52,

       45,   53,   45,   54,   55,   56,   57,   58,   45,   59,
       60,   61,   62,   63,   64,   65,   45,   45,   12,   12,
       68,   69,   70,   71,   72,   73,   74,  324,   75,  325,
       76,   77,   78,   79,   80,  345,   81,   82,   83,   84,
       85,   86,   87,   88,   88,  346,   89,   88,   88,   88,
       88,   88,   88,   88,   88,   88,   88,   88,   90,   88,
       91,   92,   93,   94,   95,   96,   97,   88,   98,   88,
       99,  100,  101,  102,  103,   88,  104,  105,  106,  107,
      108,  109,  110,   88,   88,   88,   88,  111,  111, 1097,
      111,  111,   89,  111,  111,  111,  111,  111,  111,  111,

      111,  111,  112,  111,  113,  114,  115,  116,  117,  118,
      119,  111,  120,  111,  121,  122,  123,  124,  125,  111,
      126,  127,  128,  129,  130,  131,  132,  111,  111,  111,
      111,  193,  193,  218,  195,  207,  194, 1098,  227,  195,
      219,  228,  196,  195,  208,  195,  317,  195,  195,  210,
      195,  211,  287,  318,  209,  213,  195,  288,  195,  197,
     1099,  212,  195,  195,  198,  214,  199,  203,  215,  326,
      195,  216,  327,  195,  204,  377,  217,  205,  378,  195,
      206,  222,  195,  220,  195,  223,  195,  195,  195,  195,
     1100,  195,  252,  195,  224,  225,  229,  226,  195,  253,

      195,  238,  254,  271,  195,  255,  239,  272,  195,  195,
      240,  195,  230,  231,  195,  241,  273,  195,  191,  195,
      289,  195,  195,  232,  195,  290,  233,  234,  242,  246,
      235,  192,  256,  243,  247,  195,  248, 1101,  195,  236,
      195,  257,  195,  195,  291,  195,  237,  195,  244,  292,
      262,  258,  195,  259,  195,  260,  279,  280,  911,  283,
      263,  612,  284,  264, 1102,  261,  265,  281,  294,  295,
      282,  285,  337,  375,  309,  376,  310,  338,  286,   88,
       88,   88,   88,   88,   88,   88,  311,   88, 1103,   88,
       88,   88,   88,   88, 1104,   88,   88,   88,   88,   88,

       88,   88,  296,  299,  306,  302,  312,  297,  300,  298,
      418,  301,  303,  307,  419,  304,  313,  321,  305,  314,
     1105,  322,  315,  308,  329,  330,  368,  339,  333,  341,
      323,  334,  340,  369,  342,  331,  347,  350,  332,  388,
      335,  348,  351,  349,  389,  352,  450,  336,  111,  111,
      111,  111,  111,  111,  111,  451,  111, 1106,  111,  111,
      111,  111,  111,  357,  111,  111,  111,  111,  111,  111,
      111,  353,  358,  360, 1107,  361,  363,  440,  354,  380,
      381,  355,  359,  372,  356,  362,  364,  373,  384,  365,
      382,  385,  366,  383,  390,  441,  374,  392,  911,  391,

      386,  424,  393,  405,  406,  409,  410,  387,  411,  425,
      433,  442,  436,  412,  437,  434,  448,  446,  544,  454,
      160,  455,  545,  463,  438,  447,  459,  443,  190,  193,
      193,  195,  195,  580,  194,  581,  195,  195,  195,  195,
      196,  218,  195,  531,  532,  195,  709,  195,  195,  195,
      195,  464,  195,  195,  465,  195,  195,  466,  467,  396,
      470,  195,  195,  195,  471,  537,  195,  468,  469,  195,
      538,  195,  195,  195,  472,  473,  195,  195,  568,  195,
      195,  195,  195,  195,  474,  480,  535,  536,  195,  475,
      195,  195,  195,  481,  569,  195,  195,  631,  195,  413,

      476,  476,  413,  692,  413,  477,  413,  413,  413,  413,
      195,  478,  413,  632,  413,  195,  195,  482,  483,  693,
      559,  195,  484,  195,  485,  560,  195,  195,  486,  550,
      572,  195,  195,  195,  195,  479,  487,  551,  573,  195,
      195,  413,  413,  218,  195,  195,  195,  195,  195,  489,
     1108,  195,  611,  195,  488,  195,  195,  490,  195,  491,
      612,  562,  195,  563,  195,  576,  195,  195,  492,  195,
      493,  195,  195,  564,  577,  495,  195,  195,  195,  195,
      195,  218,  712,  195,  596,  195,  494,  195,  195,  597,
      195,  431,  496,  496,  431,  713,  431,  497,  431,  431,

      431,  431,  502,  498,  431,  500,  431,  499,  511,  195,
      501,  566,  195,  195,  195, 1109,  195,  195,  195,  195,
      195,  195,  506,  503,  195,  504,  195,  574,  195,  567,
      507,  267,  629,  431,  431,  505,  195,  509,  195,  512,
      195,  195,  605,  195, 1110,  195,  606,  195,  508,  195,
      630,  513,  622,  510,  195,  195,  195,  623,  195,  514,
      195, 1111,  195,  195,  635,  515,  195,  673,  516,  218,
      517,  195,  636,  195,  195,  674,  519,  590,  591,  518,
      195,  195,  594,  595,  195,  195,  345,  195,  520,  195,
      521,  195,  522,  523,  195,  625,  346,  626,  195,  195,

      524,  195,  637,  195,  195,  195,  317,  627,  195,  195,
      667,  195,  525,  195,  668,  195,  598,  598,  539,  599,
     1112,  598,  598,  598,  598,  598,  598,  639,  598,  598,
      643,  600,  644,  653,  654,  659,  640,  657,  658,  683,
      660,  686,  696,  687,  684,  698,  690,  700, 1113,  368,
      697,  612,  601,  688, 1114,  704,  701,  705,  598,  598,
      618,  618,  557,  619,  691,  618,  618,  618,  618,  618,
      618,  397,  618,  618,  397,  620,  621,  719,  720,  459,
      345,  190,  764,  764,  218,  399,  195,  490,  399,  195,
      346,  195,  195,  195,  773, 1115,  195,  195, 1116,  195,

      827,  828,  618,  618,  661,  661,  539,  661,  768,  599,
      661,  661,  661,  661,  661,  195,  661,  661,  195,  662,
      195,  769,  771, 1117,  766,  820,  772,  195, 1118,  195,
      770, 1119,  195,  195,  317,  195,  195,  195,  821,  774,
      663,  195,  195,  195,  195,   88,  661,  661,  680,  680,
      557,  680,  612,  619,  680,  680,  680,  680,  680, 1123,
      680,  680,  195,  681,  682,  195,  490,  195,  777,  195,
      775,  776,  195,  778,  877,  878,  490,  195,  193,  193,
      195,  195,  195,  194,  195,  195,  195,  195,  195,  196,
      680,  680,  762,  762,  763,  763,  763,  460,  461,  779,

      460,  780,  781,  911,  195, 1124,  460, 1125,  218,  195,
      195,  195, 1126,  195,  782,  195,  195,  195,  195,  195,
      195,  195,  195,  195,  783,  784,  195,  195,  785,  195,
      294,  295,  317,  763,  294,  295,  195,  195,  929,  930,
      791,  195,  195,  195,  195,  195,  218,  786,  195, 1127,
      195,  195,  195,  195, 1128,  195,  195, 1129,  195,  731,
      787,  787,  731,  790,  731,  788,  731,  731,  731,  731,
      490,  789,  731,  962,  731,  195,  195,  294,  295,  794,
      195,  195,  195,  195,  195,  193,  193,  195,  793,  195,
      194,  195,  195,  368,  195,  870,  196,  368,  195,  674,

      924,  731,  731,  195,  195,  195,  795,  922,  871,  195,
      796,  195,  797,  798,  195, 1132, 1133,  195,  799,  195,
      923,  195,  195,  195,  195,  195,  195, 1134,  345, 1135,
      195,  195,  803,  800,  801,  195,  802,  195,  346, 1136,
      195,  195, 1137,  195,  195,  195, 1138,  195,  195,  195,
      804,  195,  195,  195, 1139,  805,  195,  195,  806,  195,
      195,  218,  807,  195,  809,  195,  962,  195,  195,  808,
      810,  674,  195,  195, 1140,  195, 1141,  195,  195,  195,
      812,  195,  811,  195,  195,  195,  195,  813,  195,  195,
      195,  195,  195,  490,  195,  195,  814,  195,  815,  816,

     1010, 1010,  195,  764,  764,  194, 1142,  195, 1143,  195,
      195,  195,  817, 1144,  195,  195,  195,  195,  195,  195,
     1145,  195,  889,  889,  839,  890,  962,  889,  889,  889,
      889,  889,  889, 1002,  889,  889, 1013,  891, 1003, 1146,
     1012, 1012, 1004, 1014,  195,  766, 1147, 1148,  195,  195,
      195,  195,  195,  195, 1149, 1150,  809,  195,  490,  195,
      195, 1151,  674, 1152,  889,  889,  941,  941,  839,  941,
     1153,  890,  941,  941,  941,  941,  941,  218,  941,  941,
      195,  942, 1431,  218, 1154,  195, 1155,  195,  195,  770,
     1156,  195, 1157,  195,  195,  195,  195,  195,  195,  195,

     1018,  195,  195,  368, 1020,  111,  674, 1161,  941,  941,
      762,  762,  763,  763,  763,  460,  461, 1019,  460,  962,
     1022,  195,  195, 1162,  460,  195,  195,  195,  195,  195,
      195, 1021,  195, 1023,  195,  809, 1024, 1026, 1163,  195,
      195,  195,  195,  195,  195,  195,  345,  195,  195, 1164,
      195,  763,  975, 1015, 1015,  975,  346,  975, 1016,  975,
      975,  975,  975,  368, 1017,  975,  195,  975, 1165,  195,
     1025,  195, 1027,  195,  195,  490,  195,  195,  751,  195,
      193,  193, 1028,  195, 1030,  194,  751, 1166, 1029, 1031,
      195,  196,  195,  195,  975,  975, 1167,  195,  195,  195,

      195,  195,  195, 1032, 1033,  809,  195,  195,  195,  195,
     1168,  160,  195,  425, 1034,  195, 1169,  195,  195,  195,
      195,  195,  195,  195,  195,  195, 1035, 1170,  195,  195,
     1036,  195,  195,  425,  160,  195, 1037,  195, 1038,  195,
      195,  490,  195,  195, 1039, 1040,  195, 1041,  195,  195,
      195,  195,  425,  195,  195, 1042,  195,  195, 1081, 1043,
     1171,  195,  195, 1082,  195,  195,  195, 1083,  195,  195,
      195, 1172,  195,  751,  195, 1044,  195, 1173,  218, 1047,
     1045,  490, 1174, 1175, 1046,  195,  195,  809,  195,  195,
      195,  195,  195,  195,  195,  160, 1176,  195,  195,  195,

      195, 1048,  195, 1049,  195,  195,  218, 1051, 1120, 1050,
      195, 1177,  195, 1121,  195,  195,  160, 1122,  425,  195,
      195,  195,  195, 1091, 1091, 1054, 1092,  160, 1091, 1091,
     1091, 1091, 1091, 1091, 1158, 1091, 1091, 1178, 1093, 1159,
      425,  160, 1179, 1160, 1180,  751, 1181, 1182, 1183, 1184,
     1185,  751, 1010, 1010, 1010, 1010,  461,  194,  462,  194,
     1012, 1012, 1186,  859,  859, 1091, 1091, 1130, 1130, 1054,
     1130, 1206, 1092, 1130, 1130, 1130, 1130, 1130,  195, 1130,
     1130,  809, 1131,  195,  809,  195,  193,  193, 1207, 1187,
     1208,  194,  267,  195,  195,  551,  195,  196,  195, 1188,

      195,  195, 1431,  218,  490, 1209,  195, 1210,  195, 1130,
     1130,  195,  195, 1190,  551,  267,  195,  195,  195,  195,
     1189,  551, 1211,  195,  195, 1212,  218,  490,  195,  195,
      195,  195,  195,  490,  195,  195, 1191,  859,  195, 1213,
      195,  195,  195,  195, 1214,  195,  195,  195,  195, 1192,
      195, 1215,  195,  809,  195,  195,  195,  195, 1195,  195,
      267,  195, 1193,  195,  195, 1194,  195,  218,  195, 1216,
     1197, 1217,  267,  195,  195,  195,  551,  195,  195,  195,
     1196,  195,  195,  195,  195,  195,  218,  490,  218, 1198,
      267,  195, 1218,  195,  551,  195,  195, 1199,  267,  195,

      195,  195,  195,  195,  195,  195,  195, 1219,  218,  195,
      195,  490,  195,  195,  195, 1200,  195,  809,  195, 1220,
      195,  859, 1201,  195, 1221, 1222,  195, 1223,  195, 1224,
      195,  195, 1203,  195,  195, 1202, 1225, 1205,  859,  195,
      195,  195,  195, 1204,  195,  911,  911,  195, 1226,  195,
      195,  195,  195,  195,  195,  195,  809,  195,  195, 1227,
      195,  294,  295, 1228,  317,  612, 1229, 1230,  612,  317,
      612, 1231, 1232,  911, 1233, 1234, 1235,  317, 1236, 1237,
      317,  612,  317, 1238,  612,  317, 1239, 1240,  911, 1241,
     1242, 1243, 1244, 1245,  911,  962,  962,  345, 1246, 1247,

     1248,  368,  674, 1249, 1250,  674,  368,  346,  674, 1251,
     1252,  962, 1253, 1254, 1255,  368, 1256, 1257,  368,  674,
      368, 1258,  674,  368, 1259, 1260,  962, 1261, 1262, 1263,
     1264, 1265,  962, 1266, 1267,  160, 1268, 1269,  714, 1270,
     1271,  160, 1272, 1273, 1274, 1275, 1276,  425, 1277, 1278,
      425, 1279,  714, 1280,  195, 1289, 1294, 1295,  267,  195,
      195, 1281, 1282,  195, 1284,  195,  218,  195,  195, 1283,
      195, 1296,  195,  195,  770, 1297,  195,  195,  195,  195,
      195,  195,  195,  195,  822,  195, 1285,  195,  218,  195,
      195, 1298,  195,  195, 1287, 1299,  195,  267,  195, 1286,

      195,  195,  195,  195, 1300, 1301,  195,  195,  490,  195,
     1288,  195,  195,  195, 1302,  195, 1303,  195, 1290,  195,
      195, 1304,  195, 1291,  195, 1292,  551, 1305,  490,  195,
      195,  195, 1293,  195,  195,  195, 1306,  195,  195,  195,
      195,  195,  195,  551, 1307,  822, 1308,  195,  770,  195,
     1309,  317, 1310, 1311,  872, 1312, 1313,  317, 1314, 1315,
     1316, 1317, 1318,  612, 1319, 1320,  612, 1321,  872, 1322,
     1323,  368, 1324, 1325,  924, 1326, 1327,  368, 1328, 1329,
     1330, 1331, 1332,  674, 1333, 1334,  674, 1335,  924, 1336,
      160, 1337,  714, 1338,  425, 1339,  425, 1340, 1341,  425,

      714,  425,  425, 1342,  218, 1343,  195, 1348,  267, 1349,
      490,  195,  195,  195, 1344,  195,  822,  195,  195,  195,
      195,  195,  195,  195,  195,  195,  195,  770,  195,  195,
     1345,  195,  195,  490, 1350,  551,  490,  195,  195,  195,
     1347,  195,  195,  195, 1346,  195,  195,  195,  195,  195,
      195,  770, 1351,  490,  551,  195, 1352,  195, 1353,  195,
      490,  551,  195,  822,  195,  551,  195,  195,  195,  195,
      551, 1354,  317,  195, 1355,  195,  872, 1356,  612, 1357,
      612, 1358, 1359,  612,  872,  612,  612, 1360,  368, 1361,
      924, 1362,  674, 1363,  674, 1364, 1365,  674,  924,  674,

      674, 1366, 1367,  714,  160, 1368, 1369,  195, 1371,  770,
     1374, 1375, 1370,  822,  195,  267, 1376,  195,  195,  218,
     1377, 1378,  195,  195,  195,  195, 1373,  195,  195, 1379,
      872, 1372,  195,  195,  195,  195,  317, 1380,  195, 1381,
     1382, 1383,  924,  195,  368,  195, 1384, 1385,  751, 1386,
     1387, 1388,  195, 1389, 1390,  859,  195,  195,  809,  195,
     1392, 1391,  195,  195, 1393,  195, 1394,  195,  911,  195,
      195, 1395,  195, 1396, 1397,  962, 1398, 1399, 1400, 1401,
     1402,  751,  195, 1405, 1406,  195,  859, 1403,  195,  195,
      195, 1404,  195,  195,  809,  195, 1407, 1408,  911, 1409,

     1410,  962,  751, 1411,  195, 1412,  859, 1413,  911,  195,
      809,  195, 1414,  962, 1415, 1416, 1417, 1418,  195, 1419,
     1420, 1421, 1422,  195, 1423,  195,  195, 1424, 1425, 1426,
      195,  195, 1428,  195,  195, 1427, 1429,  195, 1430,  195,
      751,  195,  195,  859,  911,  962, 1094,  195,  809,  195,
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
       15,   15,   15,   15,   15,   40,   40,   40,   40,   40,
       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
       45,   45,   45,   45,   45,   66,   66,   66,   66,   66,

       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
      138,  872,  612,  317,  317,  911, 1090, 1089, 1088,  138,
      267,  138,  138,  187,  187, 1087,  187,  187,  187, 1086,
      187,  187,  187,  187,  187,  187,  187,  187,  188,  188,
      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
      188,  188,  188,  195,  195, 1085,  859,  195, 1084,  195,
      195,  551,  195, 1431,  195,  195,  245,  245,  267,  245,
      245,  245,  245,  245,  245,  245,  245,  245,  245,  245,
      245,  344,  344, 1080,  344,  344,  344,  344,  344,  344,
      344,  344,  344,  344,  344,  344,  395,  395, 1079,  395,

      395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
      395,  398, 1078, 1077, 1076, 1075,  551,  398, 1074, 1073,
      398,  398,  398,  398,  413,  413,  413,  413, 1072,  413,
      413, 1071,  413,  413, 1070,  413, 1069,  413,  413,  431,
      431,  431,  431,  859,  431,  431, 1068,  431,  431, 1067,
      431,  431, 1066,  431,  460,  460,  460, 1065, 1064,  460,
      460,  460, 1063,  551,  460,  460,  460,  460,  460,  539,
      539,  539,  539,  859,  539,  539, 1062,  539,  539, 1061,
      539, 1060,  539,  539,  557,  557,  557,  557, 1059,  557,
      557, 1058,  557,  557, 1057,  557,  557, 1056,  557,  710,

     1055,  822,  551,  267,  267,  859, 1053, 1052,  710,  710,
      710,  710,  731,  731,  731,  731,  195,  731,  731,  462,
      731,  731,  461,  731,  461, 1009,  731,  761,  761,  761,
      761,  761,  761,  761,  761,  160, 1008,  761,  761,  761,
      761,  761,  765,  765, 1007, 1006,  751, 1005,  425, 1431,
      160,  765, 1001,  765,  765,  765,  839,  839,  839,  839,
     1000,  839,  839,  999,  839,  839,  998,  839,  997,  996,
      839,  972,  425,  995,  972,  994,  972,  972,  975,  975,
      975,  975,  993,  975,  975,  992,  975,  975,  991,  975,
      990,  751,  975, 1011, 1011,  989,  988, 1011,  987, 1011,

      986,  985, 1011,  984, 1011, 1011, 1054, 1054, 1054, 1054,
      425, 1054, 1054,  751, 1054, 1054,  983, 1054,  982,  981,
     1054,  980,  979,  978,  977,  976,  714,  425,  160,  160,
      751,  974,  973,  396,  971,  970,  969,  968,  674,  967,
      966,  965,  964,  963,  962,  961,  368,  960,  959,  958,
      957,  956,  955,  954,  953,  952,  951,  950,  949,  948,
      947,  946,  945,  944,  943,  674,  940,  368,  939,  938,
      937,  936,  935,  674,  368,  934,  933,  932,  931,  928,
      927,  674,  926,  368,  925,  924,  674,  921,  920,  919,
      918,  917,  612,  916,  915,  914,  913,  912,  911,  910,

      317,  909,  908,  907,  906,  905,  904,  903,  902,  901,
      900,  899,  898,  897,  896,  895,  894,  893,  892,  612,
      888,  317,  887,  886,  885,  884,  883,  612,  317,  882,
      881,  880,  879,  876,  875,  612,  874,  317,  873,  872,
      612,  869,  868,  867,  866,  865,  551,  864,  863,  862,
      861,  860,  859,  858,  267,  857,  856,  855,  854,  853,
      852,  851,  850,  849,  848,  847,  846,  845,  844,  843,
      842,  841,  840,  551,  838,  267,  837,  836,  835,  834,
      833,  551,  267,  832,  831,  830,  829,  826,  825,  551,
      824,  267,  823,  822,  551,  819,  818,  462,  461,  792,

      462,  461,  767,  461,  760,  759,  758,  757,  425,  756,
      755,  754,  753,  752,  751,  750,  160,  749,  748,  747,
      746,  745,  744,  743,  742,  741,  740,  739,  738,  737,
      736,  735,  734,  733,  732,  425,  730,  160,  729,  728,
      727,  726,  725,  425,  160,  724,  723,  722,  721,  718,
      717,  425,  716,  160,  715,  714,  425,  711,  397,  396,
      708,  707,  706,  703,  702,  699,  695,  694,  689,  685,
      679,  678,  368,  677,  676,  675,  111,  672,  671,  368,
      670,  669,  666,  665,  664,  656,  655,  652,  651,  650,
      649,  368,  648,  647,  646,  645,  642,  641,  638,  634,

      633,  628,  624,  617,  616,  317,  615,  614,  613,   88,
      610,  609,  317,  608,  607,  604,  603,  602,  593,  592,
      589,  588,  587,  586,  317,  585,  584,  583,  582,  579,
      578,  575,  571,  570,  565,  561,  558,  556,  555,  267,
      554,  553,  552, 1431,  549,  548,  267,  547,  546,  543,
      542,  541,  540,  534,  533,  530,  529,  528,  527,  267,
      526,  195,  462,  461,  458,  457,  456,  453,  452,  449,
      445,  444,  439,  435,  432,  430,  429,  160,  428,  427,
      426, 1431,  423,  422,  160,  421,  420,  417,  416,  415,
      414,  408,  407,  404,  403,  402,  401,  160,  400,  137,

      137,  396,  394,  379,  371,  370,  367,  343,  328,  320,
      319,  316,  293,  278,  270,  269,  266,  186,  171,  163,
      162,  159,  137, 1431,   67,   67,   11, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431
    } ;

static yyconst short int yy_chk[3172] =
    {   0,
        1,    1,    1,    1,  138,    1,    1,    1,    1,    1,
        1,    3,    1,    1,    4,    1,    6,    3,  138,   17,
        4,   17,   18,   25,  135,   18,   21,  135,   30,    6,
       20,   21,   30,   25,   21,   20,   25,   20,   31,   25,
       31,   30,    1,    1,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
        2,    2,    2,    2,    2,    2,    2,    2,    5,    5,
        5,    5,   22,    5,    5,    5,    5,    5,    5,   22,

        5,    5,   22,    5,   23,   22,   24,   27,   24,   32,
       34,   34,   32,   23,   27,   36,   44,   37,   24,   75,
       36,   34,   37,   23,   34,   42,   75,   42,  878,   44,
        5,    5,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,   35,    7,   38,   35,
       45,   45,   69,   38,   79,   45,   79,   69,   35,   47,
       69,   45,  879,   47,   47,   35,   55,   47,   47,   80,
       47,   55,   80,   55,    7,    7,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,

        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
       12,   12,   12,   12,   12,   12,   12,  102,   12,  102,
       12,   12,   12,   12,   12,  112,   12,   12,   12,   12,
       12,   12,   12,   14,   14,  112,   14,   14,   14,   14,
       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
       14,   14,   14,   14,   14,   14,   14,   16,   16,  880,
       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,

       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
       16,   46,   46,   53,   58,   49,   46,  881,   58,   58,
       53,   58,   46,   49,   49,   53,   98,   53,   49,   50,
       49,   50,   84,   98,   49,   51,   50,   84,   50,   46,
      882,   50,   51,   52,   46,   51,   46,   48,   51,  103,
       52,   51,  103,   52,   48,  125,   52,   48,  125,   48,
       48,   56,   54,   54,   48,   56,   48,   54,   56,   54,
      883,   56,   70,   57,   56,   57,   59,   57,   57,   70,

       57,   62,   70,   78,   59,   70,   62,   78,   62,   59,
       63,   59,   60,   60,   63,   63,   78,   60,  192,   63,
       85,   63,   60,   60,   60,   85,   60,   61,   64,   68,
       61,  192,   71,   64,   68,   61,   68,  884,   64,   61,
       61,   71,   61,   64,   86,   64,   61,   65,   65,   86,
       73,   71,   65,   72,   65,   72,   82,   82,  885,   83,
       73,  886,   83,   73,  887,   72,   73,   82,   90,   90,
       82,   83,  107,  124,   95,  124,   95,  107,   83,   88,
       88,   88,   88,   88,   88,   88,   95,   88,  888,   88,
       88,   88,   88,   88,  892,   88,   88,   88,   88,   88,

       88,   88,   91,   92,   94,   93,   96,   91,   92,   91,
      154,   92,   93,   94,  154,   93,   96,  101,   93,   96,
      893,  101,   96,   94,  105,  105,  120,  108,  106,  109,
      101,  106,  108,  120,  109,  105,  113,  114,  105,  129,
      106,  113,  114,  113,  129,  114,  180,  106,  111,  111,
      111,  111,  111,  111,  111,  180,  111,  894,  111,  111,
      111,  111,  111,  116,  111,  111,  111,  111,  111,  111,
      111,  115,  116,  117,  895,  117,  118,  173,  115,  127,
      127,  115,  116,  123,  115,  117,  118,  123,  128,  118,
      127,  128,  118,  127,  130,  173,  123,  131,  896,  130,

      128,  161,  131,  145,  145,  148,  148,  128,  149,  161,
      169,  174,  171,  149,  171,  169,  178,  177,  261,  183,
      178,  183,  261,  197,  171,  177,  189,  174,  189,  193,
      193,  195,  197,  290,  193,  290,  195,  197,  195,  197,
      193,  198,  198,  252,  252,  199,  396,  198,  200,  198,
      199,  199,  199,  200,  200,  200,  201,  201,  202,  396,
      204,  201,  203,  201,  205,  256,  202,  203,  203,  203,
      256,  202,  204,  202,  206,  206,  205,  204,  281,  204,
      206,  205,  206,  205,  207,  209,  255,  255,  210,  207,
      209,  207,  209,  210,  281,  210,  207,  331,  207,  208,

      208,  208,  208,  382,  208,  208,  208,  208,  208,  208,
      211,  208,  208,  331,  208,  211,  212,  211,  212,  382,
      276,  212,  212,  212,  213,  276,  213,  214,  214,  268,
      284,  213,  214,  213,  214,  208,  216,  268,  284,  215,
      216,  208,  208,  215,  215,  216,  215,  216,  217,  219,
      897,  219,  318,  217,  217,  217,  219,  219,  219,  220,
      318,  278,  221,  278,  220,  287,  220,  221,  221,  221,
      222,  222,  223,  278,  287,  225,  222,  223,  222,  223,
      224,  223,  402,  225,  306,  224,  224,  224,  225,  306,
      225,  226,  226,  226,  226,  402,  226,  226,  226,  226,

      226,  226,  228,  226,  226,  227,  226,  226,  233,  227,
      227,  280,  233,  228,  227,  898,  227,  233,  228,  233,
      228,  230,  230,  229,  229,  229,  230,  285,  230,  280,
      231,  285,  330,  226,  226,  229,  231,  232,  229,  234,
      234,  231,  311,  231,  899,  234,  311,  234,  231,  232,
      330,  235,  326,  232,  232,  235,  232,  326,  236,  235,
      235,  900,  235,  236,  334,  236,  237,  369,  237,  236,
      238,  237,  334,  237,  238,  369,  239,  302,  302,  238,
      239,  238,  305,  305,  240,  239,  346,  239,  240,  240,
      241,  240,  241,  242,  241,  328,  346,  328,  242,  241,

      243,  241,  335,  242,  243,  242,  335,  328,  244,  243,
      362,  243,  244,  244,  362,  244,  307,  307,  307,  307,
      901,  307,  307,  307,  307,  307,  307,  337,  307,  307,
      340,  307,  340,  353,  353,  357,  337,  356,  356,  377,
      357,  379,  385,  379,  377,  386,  381,  388,  902,  386,
      385,  903,  307,  379,  904,  391,  388,  391,  307,  307,
      325,  325,  325,  325,  381,  325,  325,  325,  325,  325,
      325,  397,  325,  325,  398,  325,  325,  410,  410,  459,
      662,  459,  462,  462,  468,  397,  464,  464,  398,  471,
      662,  464,  468,  464,  471,  905,  471,  468,  906,  468,

      536,  536,  325,  325,  358,  358,  358,  358,  465,  358,
      358,  358,  358,  358,  358,  465,  358,  358,  465,  358,
      466,  465,  467,  907,  462,  528,  469,  466,  908,  467,
      466,  909,  467,  466,  910,  467,  469,  472,  528,  472,
      358,  469,  472,  469,  472,  911,  358,  358,  376,  376,
      376,  376,  913,  376,  376,  376,  376,  376,  376,  914,
      376,  376,  470,  376,  376,  473,  470,  470,  474,  470,
      473,  473,  473,  475,  595,  595,  482,  482,  476,  476,
      474,  475,  482,  476,  482,  474,  475,  474,  475,  476,
      376,  376,  461,  461,  461,  461,  461,  461,  461,  479,

      461,  480,  483,  915,  483,  916,  461,  917,  481,  483,
      479,  483,  918,  480,  484,  479,  481,  479,  480,  485,
      480,  481,  484,  481,  485,  486,  485,  484,  487,  484,
      600,  600,  919,  461,  620,  620,  487,  486,  658,  658,
      493,  487,  486,  487,  486,  488,  488,  489,  493,  920,
      488,  489,  488,  493,  921,  493,  489,  922,  489,  490,
      490,  490,  490,  492,  490,  490,  490,  490,  490,  490,
      491,  490,  490,  923,  490,  492,  491,  891,  891,  499,
      492,  491,  492,  491,  495,  496,  496,  499,  495,  495,
      496,  495,  499,  925,  499,  587,  496,  926,  500,  927,

      928,  490,  490,  500,  501,  500,  500,  650,  587,  501,
      501,  501,  502,  503,  502,  929,  930,  503,  504,  502,
      650,  502,  503,  504,  503,  504,  505,  931,  681,  932,
      506,  505,  508,  505,  506,  506,  507,  506,  681,  933,
      508,  507,  934,  507,  509,  508,  935,  508,  510,  509,
      509,  509,  511,  510,  936,  510,  513,  511,  511,  511,
      512,  513,  512,  513,  515,  512,  937,  512,  514,  514,
      516,  938,  515,  514,  939,  514,  940,  515,  516,  515,
      518,  517,  517,  516,  518,  516,  517,  519,  517,  518,
      520,  518,  519,  521,  519,  520,  520,  520,  522,  523,

      765,  765,  521,  764,  764,  765,  943,  521,  944,  521,
      522,  523,  524,  945,  524,  522,  523,  522,  523,  524,
      946,  524,  612,  612,  612,  612,  947,  612,  612,  612,
      612,  612,  612,  752,  612,  612,  767,  612,  752,  948,
      766,  766,  752,  768,  767,  764,  949,  950,  768,  767,
      768,  767,  769,  773,  951,  952,  769,  769,  773,  769,
      773,  953,  954,  955,  612,  612,  674,  674,  674,  674,
      956,  674,  674,  674,  674,  674,  674,  771,  674,  674,
      771,  674,  766,  772,  957,  771,  958,  771,  772,  774,
      959,  774,  960,  772,  775,  772,  774,  777,  774,  775,

      775,  775,  777,  961,  777,  962,  964,  965,  674,  674,
      762,  762,  762,  762,  762,  762,  762,  776,  762,  966,
      779,  776,  779,  967,  762,  778,  776,  779,  776,  779,
      778,  778,  778,  780,  780,  783,  781,  785,  968,  780,
      781,  780,  785,  783,  785,  781,  942,  781,  783,  969,
      783,  762,  770,  770,  770,  770,  942,  770,  770,  770,
      770,  770,  770,  970,  770,  770,  782,  770,  971,  784,
      782,  782,  786,  782,  784,  784,  784,  786,  973,  786,
      787,  787,  790,  791,  792,  787,  974,  976,  791,  793,
      791,  787,  792,  790,  770,  770,  977,  792,  790,  792,

      790,  793,  794,  795,  796,  794,  793,  794,  793,  794,
      978,  979,  796,  980,  797,  795,  981,  796,  797,  796,
      795,  798,  795,  797,  799,  797,  798,  982,  798,  799,
      799,  799,  800,  983,  984,  801,  800,  800,  802,  800,
      801,  801,  801,  803,  803,  804,  802,  805,  803,  804,
      803,  802,  985,  802,  804,  806,  804,  805,  860,  807,
      986,  807,  805,  860,  805,  806,  807,  860,  807,  808,
      806,  987,  806,  988,  808,  810,  808,  989,  808,  812,
      810,  811,  990,  991,  810,  812,  811,  813,  811,  810,
      812,  810,  812,  813,  814,  992,  993,  815,  813,  814,

      813,  814,  815,  815,  815,  816,  817,  818,  912,  816,
      816,  994,  816,  912,  817,  818,  995,  912,  996,  817,
      818,  817,  818,  872,  872,  872,  872,  997,  872,  872,
      872,  872,  872,  872,  963,  872,  872,  998,  872,  963,
      999, 1000, 1001,  963, 1002, 1003, 1004, 1005, 1006, 1007,
     1008, 1009, 1010, 1010, 1011, 1011, 1016, 1010, 1017, 1011,
     1012, 1012, 1018, 1052, 1053,  872,  872,  924,  924,  924,
      924, 1055,  924,  924,  924,  924,  924,  924, 1013,  924,
      924, 1013,  924, 1013, 1014, 1013, 1015, 1015, 1056, 1019,
     1057, 1015, 1058, 1014, 1019, 1059, 1019, 1015, 1014, 1020,

     1014, 1020, 1012, 1021, 1022, 1060, 1020, 1061, 1020,  924,
      924, 1021, 1022, 1024, 1062, 1063, 1021, 1022, 1021, 1022,
     1023, 1064, 1065, 1024, 1023, 1066, 1026, 1025, 1024, 1023,
     1024, 1023, 1025, 1027, 1025, 1026, 1028, 1067, 1028, 1068,
     1026, 1027, 1026, 1028, 1069, 1028, 1027, 1029, 1027, 1029,
     1030, 1070, 1029, 1030, 1029, 1030, 1031, 1030, 1033, 1032,
     1071, 1031, 1031, 1031, 1032, 1032, 1032, 1034, 1033, 1072,
     1036, 1073, 1074, 1033, 1035, 1033, 1075, 1034, 1036, 1035,
     1035, 1035, 1034, 1036, 1034, 1036, 1037, 1038, 1039, 1040,
     1076, 1037, 1077, 1037, 1078, 1039, 1038, 1043, 1079, 1040,

     1039, 1038, 1039, 1038, 1040, 1041, 1040, 1080, 1042, 1043,
     1041, 1041, 1041, 1042, 1043, 1044, 1043, 1045, 1042, 1081,
     1042, 1082, 1046, 1044, 1083, 1084, 1045, 1085, 1044, 1086,
     1044, 1045, 1048, 1045, 1046, 1047, 1087, 1050, 1088, 1046,
     1047, 1046, 1047, 1049, 1048, 1089, 1090, 1049, 1094, 1048,
     1050, 1048, 1049, 1051, 1049, 1050, 1051, 1050, 1051, 1095,
     1051, 1093, 1093, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
     1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
     1123, 1124, 1125, 1126, 1127, 1128, 1129, 1131, 1132, 1133,

     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1131, 1141, 1142,
     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
     1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
     1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
     1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
     1183, 1184, 1185, 1186, 1187, 1198, 1206, 1207, 1208, 1187,
     1188, 1187, 1189, 1186, 1192, 1188, 1188, 1188, 1186, 1190,
     1186, 1209, 1189, 1190, 1191, 1210, 1192, 1189, 1190, 1189,
     1190, 1192, 1191, 1192, 1211, 1193, 1193, 1191, 1194, 1191,
     1193, 1212, 1193, 1195, 1196, 1213, 1194, 1214, 1195, 1195,

     1195, 1194, 1196, 1194, 1215, 1216, 1197, 1196, 1200, 1196,
     1197, 1197, 1199, 1197, 1217, 1200, 1218, 1199, 1199, 1199,
     1200, 1219, 1200, 1201, 1201, 1202, 1220, 1221, 1203, 1201,
     1203, 1201, 1204, 1202, 1204, 1203, 1222, 1203, 1202, 1204,
     1202, 1204, 1205, 1223, 1224, 1225, 1226, 1205, 1205, 1205,
     1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
     1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,
     1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
     1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266,
     1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,

     1277, 1278, 1279, 1280, 1281, 1282, 1285, 1294, 1295, 1296,
     1285, 1285, 1281, 1285, 1284, 1280, 1297, 1281, 1282, 1281,
     1280, 1283, 1280, 1282, 1284, 1282, 1283, 1283, 1283, 1284,
     1286, 1284, 1287, 1290, 1298, 1299, 1287, 1287, 1286, 1287,
     1289, 1290, 1288, 1286, 1288, 1286, 1290, 1288, 1290, 1288,
     1289, 1291, 1300, 1292, 1301, 1289, 1302, 1289, 1303, 1291,
     1293, 1304, 1292, 1305, 1291, 1306, 1291, 1292, 1293, 1292,
     1307, 1308, 1309, 1293, 1310, 1293, 1311, 1312, 1313, 1314,
     1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324,
     1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334,

     1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344,
     1348, 1349, 1342, 1350, 1342, 1351, 1352, 1344, 1343, 1345,
     1353, 1354, 1344, 1343, 1344, 1343, 1347, 1346, 1345, 1355,
     1356, 1346, 1346, 1345, 1346, 1345, 1357, 1358, 1347, 1359,
     1360, 1361, 1362, 1347, 1363, 1347, 1364, 1365, 1366, 1367,
     1368, 1369, 1370, 1371, 1372, 1374, 1373, 1370, 1370, 1370,
     1375, 1373, 1372, 1373, 1376, 1371, 1377, 1372, 1378, 1372,
     1371, 1379, 1371, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
     1387, 1388, 1389, 1392, 1393, 1390, 1394, 1389, 1391, 1389,
     1390, 1390, 1390, 1391, 1391, 1391, 1395, 1396, 1397, 1398,

     1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1403,
     1403, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1404, 1414,
     1415, 1416, 1417, 1404, 1418, 1404, 1412, 1419, 1420, 1421,
     1422, 1412, 1423, 1412, 1417, 1422, 1424, 1422, 1425, 1417,
     1426, 1417, 1427, 1428, 1429, 1430,  877, 1427, 1427, 1427,
     1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
     1432, 1432, 1432, 1432, 1432, 1433, 1433, 1433, 1433, 1433,
     1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433,
     1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
     1434, 1434, 1434, 1434, 1434, 1435, 1435, 1435, 1435, 1435,

     1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435,
     1436,  876,  875,  874,  873,  871,  870,  869,  868, 1436,
      867, 1436, 1436, 1437, 1437,  866, 1437, 1437, 1437,  865,
     1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1438, 1438,
     1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438,
     1438, 1438, 1438, 1439, 1439,  864,  863, 1439,  862, 1439,
     1439,  861, 1439,  859, 1439, 1439, 1440, 1440,  858, 1440,
     1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
     1440, 1441, 1441,  857, 1441, 1441, 1441, 1441, 1441, 1441,
     1441, 1441, 1441, 1441, 1441, 1441, 1442, 1442,  856, 1442,

     1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442,
     1442, 1443,  855,  854,  853,  852,  851, 1443,  850,  849,
     1443, 1443, 1443, 1443, 1444, 1444, 1444, 1444,  848, 1444,
     1444,  847, 1444, 1444,  846, 1444,  845, 1444, 1444, 1445,
     1445, 1445, 1445,  844, 1445, 1445,  843, 1445, 1445,  842,
     1445, 1445,  841, 1445, 1446, 1446, 1446,  840,  838, 1446,
     1446, 1446,  837,  836, 1446, 1446, 1446, 1446, 1446, 1447,
     1447, 1447, 1447,  835, 1447, 1447,  834, 1447, 1447,  833,
     1447,  832, 1447, 1447, 1448, 1448, 1448, 1448,  831, 1448,
     1448,  830, 1448, 1448,  829, 1448, 1448,  828, 1448, 1449,

      827,  826,  825,  824,  823,  821,  820,  819, 1449, 1449,
     1449, 1449, 1450, 1450, 1450, 1450,  809, 1450, 1450,  789,
     1450, 1450,  788, 1450,  761,  760, 1450, 1451, 1451, 1451,
     1451, 1451, 1451, 1451, 1451,  759,  758, 1451, 1451, 1451,
     1451, 1451, 1452, 1452,  757,  756,  755,  754,  753,  751,
      750, 1452,  749, 1452, 1452, 1452, 1453, 1453, 1453, 1453,
      748, 1453, 1453,  747, 1453, 1453,  746, 1453,  745,  744,
     1453, 1454,  743,  742, 1454,  741, 1454, 1454, 1455, 1455,
     1455, 1455,  740, 1455, 1455,  739, 1455, 1455,  738, 1455,
      737,  736, 1455, 1456, 1456,  735,  734, 1456,  733, 1456,

      732,  730, 1456,  729, 1456, 1456, 1457, 1457, 1457, 1457,
      728, 1457, 1457,  727, 1457, 1457,  726, 1457,  725,  724,
     1457,  723,  722,  721,  720,  719,  718,  717,  716,  715,
      713,  712,  711,  709,  708,  707,  706,  705,  704,  703,
      702,  701,  700,  699,  698,  697,  696,  695,  694,  693,
      692,  691,  690,  689,  688,  687,  686,  685,  684,  683,
      682,  679,  678,  677,  676,  675,  673,  672,  671,  670,
      669,  668,  667,  666,  665,  664,  663,  660,  659,  657,
      656,  655,  654,  653,  652,  651,  649,  648,  647,  646,
      645,  644,  643,  642,  641,  640,  639,  638,  637,  636,

      635,  634,  633,  632,  631,  630,  629,  628,  627,  626,
      625,  624,  623,  622,  621,  617,  616,  615,  614,  613,
      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
      601,  597,  596,  594,  593,  592,  591,  590,  589,  588,
      586,  585,  584,  583,  582,  581,  580,  579,  578,  577,
      576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
      566,  565,  564,  563,  562,  561,  560,  559,  558,  556,
      555,  554,  553,  552,  550,  549,  548,  547,  546,  545,
      544,  543,  542,  541,  540,  538,  537,  535,  534,  533,
      532,  531,  530,  529,  527,  526,  525,  498,  497,  494,

      478,  477,  463,  460,  458,  457,  456,  455,  454,  453,
      452,  451,  450,  449,  448,  447,  446,  445,  444,  443,
      442,  441,  440,  439,  438,  437,  436,  435,  434,  433,
      432,  430,  429,  428,  427,  426,  424,  423,  422,  421,
      420,  419,  418,  417,  416,  415,  414,  412,  411,  409,
      408,  407,  406,  405,  404,  403,  401,  400,  399,  395,
      394,  393,  392,  390,  389,  387,  384,  383,  380,  378,
      375,  374,  373,  372,  371,  370,  368,  367,  366,  365,
      364,  363,  361,  360,  359,  355,  354,  352,  351,  350,
      349,  348,  347,  343,  342,  341,  339,  338,  336,  333,

      332,  329,  327,  324,  323,  322,  321,  320,  319,  317,
      316,  315,  314,  313,  312,  310,  309,  308,  304,  303,
      301,  300,  299,  298,  297,  296,  293,  292,  291,  289,
      288,  286,  283,  282,  279,  277,  275,  274,  273,  272,
      271,  270,  269,  267,  266,  265,  264,  263,  262,  260,
      259,  258,  257,  254,  253,  251,  250,  249,  248,  247,
      246,  218,  196,  194,  186,  185,  184,  182,  181,  179,
      176,  175,  172,  170,  168,  167,  166,  165,  164,  163,
      162,  160,  159,  158,  157,  156,  155,  153,  152,  151,
      150,  147,  146,  144,  143,  142,  141,  140,  139,  137,

      136,  134,  132,  126,  122,  121,  119,  110,  104,  100,
       99,   97,   87,   81,   77,   76,   74,   39,   33,   29,
       28,   26,   19,   11,   10,    9, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
     1431
    } ;

static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
static char *yy_full_match;
static int yy_lp;
static int yy_looking_for_trail_begin = 0;
static int yy_full_lp;
static int *yy_full_state;
#define YY_TRAILING_MASK 0x2000
#define YY_TRAILING_HEAD_MASK 0x4000
#define REJECT \
{ \
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
yy_cp = yy_full_match; /* restore poss. backed-over text */ \
yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
yy_state_ptr = yy_full_state; /* restore orig. state */ \
yy_current_state = *yy_state_ptr; /* restore curr. state */ \
++yy_lp; \
goto find_rule; \
}
static int yy_more_flag = 0;
static int yy_more_len = 0;
#define yymore() (yy_more_flag = 1)
#define YY_MORE_ADJ yy_more_len
char *yytext;
#line 1 "l1.m"
#define INITIAL 0
#line 2 "l1.m"
#define VERSION "4.0"

#ifndef DEFAULT
#define DEFAULT "Courier"
#endif
#ifndef COMMENT
#define COMMENT "Helvetica-Oblique"
#endif
#ifndef PREPROC
#define PREPROC "Courier-BoldOblique"
#endif
#ifndef KEYWORD
#define KEYWORD "Courier-Bold"
#endif
#ifndef TYPE
#define TYPE    "Courier-Bold"
#endif
#ifndef STRINGS
#define STRINGS "Courier-Oblique"
#endif
#ifndef LNUMBER
#define LNUMBER "Times-Roman"
#endif
#ifndef FUNCTION
#define FUNCTION "Bookman-LightItalic"
#endif
#ifndef DIM
#define DIM 0.75
#endif
#ifdef LETTER
#define LETTER 1
#else
#define LETTER 0
#endif

#define ISO "\n"\
"%%%%BeginProlog								\n"\
"/reencdict 12 dict def /ReEncode { reencdict begin				\n"\
"/newcodesandnames exch def /newfontname exch def /basefontname exch def	\n"\
"/basefontdict basefontname findfont def /newfont basefontdict maxlength dict	\n"\
"def basefontdict { exch dup /FID ne { dup /Encoding eq				\n"\
"{ exch dup length array copy newfont 3 1 roll put }				\n"\
"{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall		\n"\
"newfont /FontName newfontname put newcodesandnames aload pop   		\n"\
"128 1 255 { newfont /Encoding get exch /.notdef put } for			\n"\
"newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat 	\n"\
"newfontname newfont definefont pop end } def					\n"\
"/isovec [									\n"\
"8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde			\n"\
"8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis			\n"\
"8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron	\n"\
"8#220 /dotlessi 8#230 /oe 8#231 /OE  						\n"\
"8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling			\n"\
"8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis	\n"\
"8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot	\n"\
"8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus	\n"\
"8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph\n"\
"8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine	\n"\
"8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf				\n"\
"8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute		\n"\
"8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring			\n"\
"8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute				\n"\
"8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute		\n"\
"8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve	\n"\
"8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply\n"\
"8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex			\n"\
"8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave	\n"\
"8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring	\n"\
"8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute				\n"\
"8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute		\n"\
"8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve	\n"\
"8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide	\n"\
"8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex			\n"\
"8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def		\n"\
"%%%%EndProlog\n\n"

#define FILLEDBOX "\n"\
"/FilledBox {\n"\
" gsave\n"\
"  newpath\n"\
"  moveto 2 copy\n"\
"  0 exch rlineto\n"\
"  0 rlineto\n"\
"  2 copy\n"\
"  neg 0 exch rlineto \n"\
"  pop\n"\
"  currentpoint\n"\
"  closepath\n"\
"  0.95 setgray fill\n"\
" grestore\n"\
" gsave\n"\
"  newpath\n"\
"  moveto\n"\
"  dup 0 exch rlineto\n"\
"  1 1 rlineto\n"\
"  2 add neg 0 exch rlineto\n"\
"  2 add neg 0 rlineto\n"\
"  1 1 rlineto\n"\
"  closepath\n"\
"  0.85 setgray fill\n"\
" grestore\n"\
"} def\n"
    
#define INOUTFUNCTIONS "\n"\
"/DrawArrow { \n"\
"  gsave 0.6 setlinewidth\n"\
"  newpath\n"\
"    moveto 1 setgray -5 3 rlineto currentpoint stroke\n"\
"    moveto 0.83 setgray 17 -3 rlineto currentpoint stroke\n"\
"    moveto 1 setgray -17 -3 rlineto currentpoint stroke\n"\
"    moveto 0.83 setgray 5 3 rlineto stroke\n"\
"  closepath\n"\
"  grestore\n"\
"} def\n\n"\
"/InFunction {\ngsave 0 setgray \n"\
"dup length 0 eq\n{ pop }\n{ 385 812 DrawArrow\ngsave\n"\
"newpath 380 795 moveto 517 795 lineto 517 820 lineto 380 820 lineto "\
"closepath clip\n/Times-Italic findfont 8 scalefont setfont\n"\
"400 810 moveto s\ngrestore } ifelse\ngrestore\n} def\n\n"\
"/OutFunction {\ngsave 0 setgray \n"\
"\ndup length 0 eq\n{ pop }\n{507 803 DrawArrow\ngsave\n"\
"newpath 380 795 moveto 517 795 lineto 517 820 lineto 380 820 lineto "\
"closepath clip\n/Times-Italic findfont 8 scalefont setfont\n"\
"dup stringwidth pop neg 500 add 801 moveto s\ngrestore } ifelse\n"\
"grestore\n} def\n\n"

#define FUNCTIONBOX \
"/FunctionBox {\n"\
"  gsave\n"\
"  100 10 475 782 FilledBox\n"\
"  0 setgray\n"\
"  /Times-BoldItalic findfont 8 scalefont setfont\n"\
"  (Functions) dup stringwidth pop 2 div neg 525 add 784 moveto s\n\n"\
"  /inds exch def\n"\
"  475 773 moveto\n"\
"  counttomark 2 div cvi\n"\
"  {\n"\
"    currentpoint exch pop 575 exch moveto\n"\
"    gsave currentpoint newpath moveto 0 -3 rmoveto 0 inds 1.25 mul rlineto\n"\
"    -100 0 rlineto 0 inds 1.25 mul neg rlineto closepath 0.95 setgray fill\n"\
"    grestore\n"\
"    /Times-Roman findfont inds scalefont setfont\n"\
"    currentpoint exch pop 1 index stringwidth pop neg dup 575 add exch\n"\
"    4 1 roll exch moveto -0.5 0 rmoveto s\n"\
"    /Times-Italic findfont inds scalefont setfont\n"\
"    gsave -4 add currentpoint exch pop 476 exch \n"\
"    newpath moveto\n"\
"    0 -20 rlineto 100 add dup 0 rlineto 0 40 rlineto\n"\
"    neg 0 rlineto 0 -20 rlineto closepath clip 0.5 0 rmoveto s\n"\
"    grestore\n"\
"    0 inds 1 add neg rmoveto\n"\
"  } repeat\n"\
"  grestore\n"\
"  pop\n"\
"} def\n"

#define VERS "\n/ver {\n"\
"  gsave 0 setgray 575 822 moveto\n"\
"  /Bookman-Light findfont 5 scalefont setfont\n"\
"  (c2ps v%s) dup stringwidth pop neg 0 rmoveto s\n"\
"  grestore\n\n} def\n"

#define VerMsg \
"c2ps version %s\n"\
"Copyright (C)  1995-1997  Dmitri Shtilman, Dmitri Makarov\n"

#define HelpMsg \
"Usage: c2ps  [ -?h124abceikmnruvwx ] [ -F default_font   ] [ -C comment_font  ]\n"\
"             [ -K keyword_font     ] [ -N lnumber_font   ] [ -P preproc_font  ]\n"\
"             [ -S string_font      ] [ -T type_font      ] [ -U function_font ]\n"\
"             [ -X nonlatin_font    ] [ -d dim_comments   ] [ -f fontsize      ]\n"\
"             [ -l lines            ] [ -o output_file    ] [ -p paper         ]\n"\
"             [ -s space            ] [ -t tabsize        ] [ -_ fun_highlight ]\n"\
"             [ -DPREPROC_VAR ...   ] [ -UPREPROC_VAR ... ] [ file ... ]\n"

#define BUFL	8192		/* " buffer length  */
#define PAGE	790.
#define DUP(x,y)  x = (char*)malloc(strlen(y) + 1); strcpy(x,y)
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>

FILE* out;			/* output stream */

struct fun {			/* strucure to hold info about fun id definition */
    char* name;			
    long unsigned page;		
    long unsigned line;		
    struct fun *next;		
};


/* FLAGS */
unsigned noc = 0;	        /* global: disable c highlighting */
unsigned number_lines = 1;	/* global: number lines */
unsigned line_cut = 0;		/* global: cut long lines */
unsigned ppl = 1;		/* global: columns per page */
unsigned lpp = 0;		/* global: lines per page */
unsigned letter = LETTER;	/* global: use letter paper type */
unsigned frame = 0;		/* global: draw frame around each column */
unsigned iso = 1;		/* global: support ISO Latin 1 encoding */
unsigned last_modified = 1;	/* global: print the time when file was last modified */
unsigned header = 1;		/* global: print header */
unsigned adjust_comments = 1;	/* global: adjust multiple line comments */
unsigned ext = 1;		/* global:  */
unsigned c_ext = 0;		/* global: highlight files according to extension */
unsigned fun_box = 1;		/* global:  */
unsigned fun_entry_exit = 1;	/* global: print fun id's at entry and exit */
unsigned fun_highlight_id = 2;	/* global:  fun id highlight: 0-none, 1-box,
				   2-underline (default) */

int tab = 8;			/* global: number of spaces in a tab */
float fontsize = 10.;		/* global:  font size */
float spacing = 0.;		/* global: space between the lines */
float dim_comment = DIM;	/* global: comment dimming coefficient */

static struct fun *first;	/* internal: list of fun structures */
static struct fun *new_fun;		
static struct fun *fn;			
static struct fun *pr;			

static long unsigned line = 0;	/* internal: current line within a currently scanned file */
static long unsigned line_on_page = 0; /* internal: line in a local page */
static long unsigned page = 0;	/* internal: current page of a currently scanned file */
static long unsigned total_page = 0; /* internal: currently printed page */

static unsigned line_split = 0;	/* internal: we are in a subline of a wrapped line */
static unsigned lc = 0;		/* internal:  */
static unsigned str_length = 0;	/* internal: current string length in chars */
static unsigned comment = 0;	/* internal: we are within a comment */
static unsigned com_start = 0;	/* internal:  */
static unsigned comment_many_lines; /* internal:  */
static unsigned function_body_expected = 0; /* internal:  */
static int nesting = 0;		/* internal: current nesting depth */
static float x;			/* internal: current x coordinate */
static float chw = 6.;		/* internal:  */

static char buffer[BUFL];	/* internal */

static char *c;			/* internal:  */
static char *cur_fun = NULL;	/* internal: current function id */

static char **fp = NULL;	/* list of names of files to print */
static int fp_cur = -1;		/* internal: index of a current  file */
static int fp_num = 0;		/* internal: number of files to print */

static char **defs = NULL;	/* list of defined preprocessor vars */
static int defs_num = 0;	/*  */
static char **undefs = NULL;	/* list of undefined preprocessor vars */
static int undefs_num = 0;	/*  */
static unsigned dont_print[10];
static unsigned prep_touch[10];
static int pd = 0;

static char date[25];		/* internal: current or last modified date */
static time_t t;		/* internal:  */
static struct stat b;		/* internal:  */

static unsigned long processed;	/* internal:  */
static char ratio[13] = "(          )";
static unsigned nonlatin_text = 0;

int PString	YY_PROTO((char*));
char* PRatio	();
int PFlush	();
int PFill	YY_PROTO((char*));
int PFunctionBox();
int NextPage	();
int NextLine	();
int Version	();
int Help	();
int PCext	YY_PROTO((char*));
int IsDefined	YY_PROTO((char*));
int IsUndefined	YY_PROTO((char*));
#define comm 1

#define preps 2

#define nnested 3

#define dont_highlight 4

#line 1892 "c2ps.c"

/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap YY_PROTO(( void ));
#else
extern int yywrap YY_PROTO(( void ));
#endif
#endif

#ifndef YY_NO_UNPUT
static void yyunput YY_PROTO(( int c, char *buf_ptr ));
#endif

#ifndef yytext_ptr
static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
#endif

#ifndef YY_NO_INPUT
#ifdef __cplusplus
static int yyinput YY_PROTO(( void ));
#else
static int input YY_PROTO(( void ));
#endif
#endif

#if YY_STACK_USED
static int yy_start_stack_ptr = 0;
static int yy_start_stack_depth = 0;
static int *yy_start_stack = 0;
#ifndef YY_NO_PUSH_STATE
static void yy_push_state YY_PROTO(( int new_state ));
#endif
#ifndef YY_NO_POP_STATE
static void yy_pop_state YY_PROTO(( void ));
#endif
#ifndef YY_NO_TOP_STATE
static int yy_top_state YY_PROTO(( void ));
#endif

#else
#define YY_NO_PUSH_STATE 1
#define YY_NO_POP_STATE 1
#define YY_NO_TOP_STATE 1
#endif

#ifdef YY_MALLOC_DECL
YY_MALLOC_DECL
#else
#if __STDC__
#ifndef __cplusplus
#include <stdlib.h>
#endif
#else
/* Just try to get by without declaring the routines.  This will fail
 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
 * or sizeof(void*) != sizeof(int).
 */
#endif
#endif

/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE 8192
#endif

/* Copy whatever the last rule matched to the standard output. */

#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite().
 */
#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
#endif

/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 * is returned in "result".
 */
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
	if ( yy_current_buffer->yy_is_interactive ) \
		{ \
		int c = '*', n; \
		for ( n = 0; n < max_size && \
			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
			buf[n] = (char) c; \
		if ( c == '\n' ) \
			buf[n++] = (char) c; \
		if ( c == EOF && ferror( yyin ) ) \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
		result = n; \
		} \
	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
		  && ferror( yyin ) ) \
		YY_FATAL_ERROR( "input in flex scanner failed" );
#endif

/* No semi-colon after return; correct usage is to write "yyterminate();" -
 * we don't want an extra ';' after the "return" because that will cause
 * some compilers to complain about unreachable statements.
 */
#ifndef yyterminate
#define yyterminate() return YY_NULL
#endif

/* Number of entries by which start-condition stack grows. */
#ifndef YY_START_STACK_INCR
#define YY_START_STACK_INCR 25
#endif

/* Report a fatal error. */
#ifndef YY_FATAL_ERROR
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL int yylex YY_PROTO(( void ))
#endif

/* Code executed at the beginning of each rule, after yytext and yyleng
 * have been set up.
 */
#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif

/* Code executed at the end of each rule. */
#ifndef YY_BREAK
#define YY_BREAK break;
#endif

#define YY_RULE_SETUP \
	if ( yyleng > 0 ) \
		yy_current_buffer->yy_at_bol = \
				(yytext[yyleng - 1] == '\n'); \
	YY_USER_ACTION

YY_DECL
	{
	register yy_state_type yy_current_state;
	register char *yy_cp, *yy_bp;
	register int yy_act;

#line 301 "l1.m"

#line 2044 "c2ps.c"

	if ( yy_init )
		{
		yy_init = 0;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

		if ( ! yy_start )
			yy_start = 1;	/* first start state */

		if ( ! yyin )
			yyin = stdin;

		if ( ! yyout )
			yyout = stdout;

		if ( ! yy_current_buffer )
			yy_current_buffer =
				yy_create_buffer( yyin, YY_BUF_SIZE );

		yy_load_buffer_state();
		}

	while ( 1 )		/* loops until end-of-file is reached */
		{
		yy_more_len = 0;
		if ( yy_more_flag )
			{
			yy_more_len = yyleng;
			yy_more_flag = 0;
			}
		yy_cp = yy_c_buf_p;

		/* Support of yytext. */
		*yy_cp = yy_hold_char;

		/* yy_bp points to the position in yy_ch_buf of the start of
		 * the current run.
		 */
		yy_bp = yy_cp;

		yy_current_state = yy_start;
		yy_current_state += YY_AT_BOL();
		yy_state_ptr = yy_state_buf;
		*yy_state_ptr++ = yy_current_state;
yy_match:
		do
			{
			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
				{
				yy_current_state = (int) yy_def[yy_current_state];
				if ( yy_current_state >= 1432 )
					yy_c = yy_meta[(unsigned int) yy_c];
				}
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
			*yy_state_ptr++ = yy_current_state;
			++yy_cp;
			}
		while ( yy_base[yy_current_state] != 3127 );

yy_find_action:
		yy_current_state = *--yy_state_ptr;
		yy_lp = yy_accept[yy_current_state];
find_rule: /* we branch to this label when backing up */
		for ( ; ; ) /* until we find what rule we matched */
			{
			if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
				{
				yy_act = yy_acclist[yy_lp];
				if ( yy_act & YY_TRAILING_HEAD_MASK ||
				     yy_looking_for_trail_begin )
					{
					if ( yy_act == yy_looking_for_trail_begin )
						{
						yy_looking_for_trail_begin = 0;
						yy_act &= ~YY_TRAILING_HEAD_MASK;
						break;
						}
					}
				else if ( yy_act & YY_TRAILING_MASK )
					{
					yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
					yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
					yy_full_match = yy_cp;
					yy_full_state = yy_state_ptr;
					yy_full_lp = yy_lp;
					}
				else
					{
					yy_full_match = yy_cp;
					yy_full_state = yy_state_ptr;
					yy_full_lp = yy_lp;
					break;
					}
				++yy_lp;
				goto find_rule;
				}
			--yy_cp;
			yy_current_state = *--yy_state_ptr;
			yy_lp = yy_accept[yy_current_state];
			}

		YY_DO_BEFORE_ACTION;


do_action:	/* This label is used only to access EOF actions. */


		switch ( yy_act )
	{ /* beginning of action switch */
case 1:
YY_RULE_SETUP
#line 302 "l1.m"
{
                        PString(yytext);
                }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 305 "l1.m"
{
                        NextLine();
                }
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 308 "l1.m"
{ /*'*/
			PFlush();
                        fprintf(out, "cf fst\n");
                        PString(yytext);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 314 "l1.m"
{
                        PFlush();
			while (1)
			  {
			    if (pd > 0 &&
                                dont_print[pd - 1])
			      break;

                            comment = 1;
			    comment_many_lines = 0;
                            fprintf(out, "cf fco %.2f setgray\n", dim_comment);
                            com_start = ++str_length;
			    ++str_length;
                            fprintf(out, (adjust_comments) ?
                                         "(\\/)s  currentpoint pop (*) s " : "(\\/*) s ");
			    BEGIN(comm);
			    break;
			  }
		}
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 333 "l1.m"
{
			c = yytext;
			if (adjust_comments)
			  {
			    if (comment_many_lines)
			      {
                                fprintf(out, " %.2f moveto ", x + fontsize + spacing);
			        while (*c == ' ' || *c== '\t')
				  c++;
			        str_length = com_start;
			       }
			       else
			       fprintf(out, " pop ");
			   }
			   PString(c);
                        fprintf(out, " sf 0 setgray\n");
                        comment = 0;
			BEGIN((nesting<=0)? nnested : INITIAL);
		}
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 352 "l1.m"
{	yymore();		}
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 353 "l1.m"
{
			c = yytext;
                        if (adjust_comments && comment_many_lines++)
                          {
			    fprintf(out," dup %.2f moveto ", x + fontsize + spacing);
			    while(*c == ' ' || *c == '\t')
			      c++;
			    str_length = com_start;
                          }
                        PString(c);
		}
	YY_BREAK
case 8:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 364 "l1.m"
{	yymore();		}
	YY_BREAK
case 9:
YY_RULE_SETUP
#line 366 "l1.m"
{
			PFlush();
			while (1)
			  {
			    if (pd > 0 &&
				prep_touch[pd - 1] &&
				dont_print[pd])
			      break;

			     comment = 1;
                             fprintf(out, "cf fco %.2f setgray\n", dim_comment);
                             PString(yytext);
			     fprintf(out, "sf 0 setgray\n");
			     comment = 0;
			     break;
			  }
		}
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 383 "l1.m"
{
                        PFlush();
			while (1)
			  {
			    if (! strncmp (yytext, "#ifdef", 6))
			      {
				if (IsDefined (& yytext[7]))
				  {
				    dont_print[pd] = (pd > 0) && dont_print[pd - 1];
				    prep_touch[pd] = 1;
				    pd++;
				    while (input() != '\n');
				    break;
				  }
				else if (IsUndefined (& yytext[7]))
				  {
				    dont_print[pd] = 1;
				    prep_touch[pd] = 1;
				    pd++;
				    while (input() != '\n');
				    break;
				  }

				dont_print[pd] = (pd > 0) && dont_print[pd - 1];
				prep_touch[pd] = 0;
				pd++;
				if (dont_print[pd - 1])
				  {
				    while (input() != '\n');
				    break;
				  }
			      }
			    else if (! strncmp (yytext, "#ifndef", 7))
			      {
				if (IsUndefined (& yytext[8]))
				  {
				    dont_print[pd] = (pd > 0) && dont_print[pd - 1];
				    prep_touch[pd] = 1;
				    pd++;
				    while (input() != '\n');
				    break;
				  }
				else if (IsDefined (& yytext[8]))
				  {
				    dont_print[pd] = 1;
				    prep_touch[pd] = 1;
				    pd++;
				    while (input() != '\n');
				    break;
				  }

				dont_print[pd] = (pd > 0) && dont_print[pd - 1];
				prep_touch[pd] = 0;
				pd++;
				if (dont_print[pd - 1])
				  {
				    while (input() != '\n');
				    break;
				  }
			      }
			    else if (! strncmp (yytext, "#endif", 6))
			      {
				--pd;
				if (pd < 0)
				  pd = 0;
				if (prep_touch[pd])
				  {
				    while (input() != '\n');
				    break;
				  }
			      } 			  
			    else if (! strncmp (yytext, "#else", 5))
			      {
				if (prep_touch[pd - 1])
				  dont_print[pd - 1] =
				      ! dont_print[pd - 1] ||
				      ((pd > 1) && dont_print[pd - 2]);
				if (prep_touch[pd - 1])
				  {
				    while (input() != '\n');
				    break;
				  }
			      }
			    
			    BEGIN(preps);
			    fprintf(out, "cf fpr\n");
			    PString(yytext);
			    fprintf(out, "sf\n");
			    break;
			  }
		}
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 474 "l1.m"
{
                        PFill("\\");
			PFlush();
			NextLine();
		}
	YY_BREAK
case 12:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 479 "l1.m"
{
			PFlush();
                        BEGIN((nesting <= 0) ? nnested : INITIAL);
		}
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 483 "l1.m"
{
			if (pd > 0 &&
			    prep_touch[pd - 1] &&
			    dont_print[pd - 1])
			  REJECT;
                        if (nesting || function_body_expected)
                          REJECT;
                        function_body_expected = 1;
			if (cur_fun)
			  free(cur_fun);
			DUP(cur_fun, yytext);
			if (fun_box)
			  {
			    new_fun = (struct fun*) malloc(sizeof(struct fun));
			    DUP(new_fun->name, yytext);
			    new_fun->page = page;
			    new_fun->line = line;
			    for(pr = NULL, fn = first;
				fn && strcmp(fn->name, yytext) > 0;
				pr=fn,fn=fn->next);
			    if (pr == NULL)
			      {
				new_fun->next = first;
				first = new_fun;
			      }
			    else
			      {
				new_fun->next = pr->next;
				pr->next = new_fun;
			      }
			  }
			
			PFlush();
                        fprintf(out, "cf ffu\n");
			if (fun_highlight_id == 2) /* underline */
			  {
			    fprintf(out, "gsave %.2f %.2f rmoveto (%s) stringwidth "
				    "pop 0 currentpoint newpath moveto rlineto "
				    "closepath 0.01 setlinewidth stroke grestore\n",
				    chw/12., -fontsize/5., yytext);
			  }
			else if (fun_highlight_id == 1)	/* box */
			  {
			    fprintf(out, "gsave (%s) stringwidth "
				    "pop 2 add %.2f -1 -1 rmoveto "
				    "currentpoint\nFilledBox grestore\n",
				    yytext,fontsize);
			  }
                        PString(yytext);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 14:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 534 "l1.m"
{
			PFill(yytext);
			PFlush();
                        fprintf(out, "cf fty\n");
                        PString(yytext + 1);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 15:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 541 "l1.m"
{
			PFlush();
                        fprintf(out, "cf fty\n");
                        PString(yytext);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 16:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 547 "l1.m"
{
			PFill(yytext);
			PFlush();
                        fprintf(out, "cf %s\n", (ext) ? "fty" : "fdf");
                        PString(yytext + 1);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 17:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 554 "l1.m"
{
			PFlush();
                        fprintf(out, "cf %s\n", (ext) ? "fty" : "fdf");
                        PString(yytext);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 18:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 560 "l1.m"
{
			PFill(yytext);
			PFlush();
                        fprintf(out, "cf fke\n");
                        PString(yytext + 1);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 19:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 567 "l1.m"
{
			PFlush();
                        fprintf(out, "cf fke\n");
                        PString(yytext);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 20:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 573 "l1.m"
{
			PFill(yytext);
			PFlush();
                        fprintf(out, "cf %s\n", (ext) ? "fke" : "fdf");
                        PString(yytext + 1);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 21:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 580 "l1.m"
{
			PFlush();
                        fprintf(out, "cf %s\n", (ext) ? "fke" : "fdf");
                        PString(yytext);
			fprintf(out, "sf\n");
		}
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 586 "l1.m"
{
			PFlush();
			if (! (pd > 0 &&
			       dont_print[pd - 1]))
			  NextLine();
		}
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 592 "l1.m"
{
                        PFill(yytext);
		}
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 595 "l1.m"
ECHO;
	YY_BREAK
#line 2577 "c2ps.c"
			case YY_STATE_EOF(INITIAL):
			case YY_STATE_EOF(comm):
			case YY_STATE_EOF(preps):
			case YY_STATE_EOF(nnested):
			case YY_STATE_EOF(dont_highlight):
				yyterminate();

	case YY_END_OF_BUFFER:
		{
		/* Amount of text matched not including the EOB char. */
		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;

		/* Undo the effects of YY_DO_BEFORE_ACTION. */
		*yy_cp = yy_hold_char;

		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
			{
			/* We're scanning a new file or input source.  It's
			 * possible that this happened because the user
			 * just pointed yyin at a new source and called
			 * yylex().  If so, then we have to assure
			 * consistency between yy_current_buffer and our
			 * globals.  Here is the right place to do so, because
			 * this is the first action (other than possibly a
			 * back-up) that will match for the new input source.
			 */
			yy_n_chars = yy_current_buffer->yy_n_chars;
			yy_current_buffer->yy_input_file = yyin;
			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
			}

		/* Note that here we test for yy_c_buf_p "<=" to the position
		 * of the first EOB in the buffer, since yy_c_buf_p will
		 * already have been incremented past the NUL character
		 * (since all states make transitions on EOB to the
		 * end-of-buffer state).  Contrast this with the test
		 * in input().
		 */
		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
			{ /* This was really a NUL. */
			yy_state_type yy_next_state;

			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state();

			/* Okay, we're now positioned to make the NUL
			 * transition.  We couldn't have
			 * yy_get_previous_state() go ahead and do it
			 * for us because it doesn't know how to deal
			 * with the possibility of jamming (and we don't
			 * want to build jamming into it because then it
			 * will run more slowly).
			 */

			yy_next_state = yy_try_NUL_trans( yy_current_state );

			yy_bp = yytext_ptr + YY_MORE_ADJ;

			if ( yy_next_state )
				{
				/* Consume the NUL. */
				yy_cp = ++yy_c_buf_p;
				yy_current_state = yy_next_state;
				goto yy_match;
				}

			else
				{
				yy_cp = yy_c_buf_p;
				goto yy_find_action;
				}
			}

		else switch ( yy_get_next_buffer() )
			{
			case EOB_ACT_END_OF_FILE:
				{
				yy_did_buffer_switch_on_eof = 0;

				if ( yywrap() )
					{
					/* Note: because we've taken care in
					 * yy_get_next_buffer() to have set up
					 * yytext, we can now set up
					 * yy_c_buf_p so that if some total
					 * hoser (like flex itself) wants to
					 * call the scanner after we return the
					 * YY_NULL, it'll still work - another
					 * YY_NULL will get returned.
					 */
					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;

					yy_act = YY_STATE_EOF(YY_START);
					goto do_action;
					}

				else
					{
					if ( ! yy_did_buffer_switch_on_eof )
						YY_NEW_FILE;
					}
				break;
				}

			case EOB_ACT_CONTINUE_SCAN:
				yy_c_buf_p =
					yytext_ptr + yy_amount_of_matched_text;

				yy_current_state = yy_get_previous_state();

				yy_cp = yy_c_buf_p;
				yy_bp = yytext_ptr + YY_MORE_ADJ;
				goto yy_match;

			case EOB_ACT_LAST_MATCH:
				yy_c_buf_p =
				&yy_current_buffer->yy_ch_buf[yy_n_chars];

				yy_current_state = yy_get_previous_state();

				yy_cp = yy_c_buf_p;
				yy_bp = yytext_ptr + YY_MORE_ADJ;
				goto yy_find_action;
			}
		break;
		}

	default:
		YY_FATAL_ERROR(
			"fatal flex scanner internal error--no action found" );
	} /* end of action switch */
		} /* end of scanning one token */
	} /* end of yylex */


/* yy_get_next_buffer - try to read in a new buffer
 *
 * Returns a code representing an action:
 *	EOB_ACT_LAST_MATCH -
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 *	EOB_ACT_END_OF_FILE - end of file
 */

static int yy_get_next_buffer()
	{
	register char *dest = yy_current_buffer->yy_ch_buf;
	register char *source = yytext_ptr;
	register int number_to_move, i;
	int ret_val;

	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
		YY_FATAL_ERROR(
		"fatal flex scanner internal error--end of buffer missed" );

	if ( yy_current_buffer->yy_fill_buffer == 0 )
		{ /* Don't try to fill the buffer, so this is an EOF. */
		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
			{
			/* We matched a singled characater, the EOB, so
			 * treat this as a final EOF.
			 */
			return EOB_ACT_END_OF_FILE;
			}

		else
			{
			/* We matched some text prior to the EOB, first
			 * process it.
			 */
			return EOB_ACT_LAST_MATCH;
			}
		}

	/* Try to read more data. */

	/* First move last chars to start of buffer. */
	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;

	for ( i = 0; i < number_to_move; ++i )
		*(dest++) = *(source++);

	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
		/* don't do the read, it's not guaranteed to return an EOF,
		 * just force an EOF
		 */
		yy_n_chars = 0;

	else
		{
		int num_to_read =
			yy_current_buffer->yy_buf_size - number_to_move - 1;

		while ( num_to_read <= 0 )
			{ /* Not enough room in the buffer - grow it. */
#ifdef YY_USES_REJECT
			YY_FATAL_ERROR(
"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
#else

			/* just a shorter name for the current buffer */
			YY_BUFFER_STATE b = yy_current_buffer;

			int yy_c_buf_p_offset =
				(int) (yy_c_buf_p - b->yy_ch_buf);

			if ( b->yy_is_our_buffer )
				{
				int new_size = b->yy_buf_size * 2;

				if ( new_size <= 0 )
					b->yy_buf_size += b->yy_buf_size / 8;
				else
					b->yy_buf_size *= 2;

				b->yy_ch_buf = (char *)
					/* Include room in for 2 EOB chars. */
					yy_flex_realloc( (void *) b->yy_ch_buf,
							 b->yy_buf_size + 2 );
				}
			else
				/* Can't grow it, we don't own it. */
				b->yy_ch_buf = 0;

			if ( ! b->yy_ch_buf )
				YY_FATAL_ERROR(
				"fatal error - scanner input buffer overflow" );

			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];

			num_to_read = yy_current_buffer->yy_buf_size -
						number_to_move - 1;
#endif
			}

		if ( num_to_read > YY_READ_BUF_SIZE )
			num_to_read = YY_READ_BUF_SIZE;

		/* Read in more data. */
		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
			yy_n_chars, num_to_read );
		}

	if ( yy_n_chars == 0 )
		{
		if ( number_to_move == YY_MORE_ADJ )
			{
			ret_val = EOB_ACT_END_OF_FILE;
			yyrestart( yyin );
			}

		else
			{
			ret_val = EOB_ACT_LAST_MATCH;
			yy_current_buffer->yy_buffer_status =
				YY_BUFFER_EOF_PENDING;
			}
		}

	else
		ret_val = EOB_ACT_CONTINUE_SCAN;

	yy_n_chars += number_to_move;
	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;

	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];

	return ret_val;
	}


/* yy_get_previous_state - get the state just before the EOB char was reached */

static yy_state_type yy_get_previous_state()
	{
	register yy_state_type yy_current_state;
	register char *yy_cp;

	yy_current_state = yy_start;
	yy_current_state += YY_AT_BOL();
	yy_state_ptr = yy_state_buf;
	*yy_state_ptr++ = yy_current_state;

	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
		{
		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
			{
			yy_current_state = (int) yy_def[yy_current_state];
			if ( yy_current_state >= 1432 )
				yy_c = yy_meta[(unsigned int) yy_c];
			}
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
		*yy_state_ptr++ = yy_current_state;
		}

	return yy_current_state;
	}


/* yy_try_NUL_trans - try to make a transition on the NUL character
 *
 * synopsis
 *	next_state = yy_try_NUL_trans( current_state );
 */

#ifdef YY_USE_PROTOS
static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
#else
static yy_state_type yy_try_NUL_trans( yy_current_state )
yy_state_type yy_current_state;
#endif
	{
	register int yy_is_jam;

	register YY_CHAR yy_c = 1;
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
		{
		yy_current_state = (int) yy_def[yy_current_state];
		if ( yy_current_state >= 1432 )
			yy_c = yy_meta[(unsigned int) yy_c];
		}
	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
	*yy_state_ptr++ = yy_current_state;
	yy_is_jam = (yy_current_state == 1431);

	return yy_is_jam ? 0 : yy_current_state;
	}


#ifndef YY_NO_UNPUT
#ifdef YY_USE_PROTOS
static void yyunput( int c, register char *yy_bp )
#else
static void yyunput( c, yy_bp )
int c;
register char *yy_bp;
#endif
	{
	register char *yy_cp = yy_c_buf_p;

	/* undo effects of setting up yytext */
	*yy_cp = yy_hold_char;

	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
		{ /* need to shift things up to make room */
		/* +2 for EOB chars. */
		register int number_to_move = yy_n_chars + 2;
		register char *dest = &yy_current_buffer->yy_ch_buf[
					yy_current_buffer->yy_buf_size + 2];
		register char *source =
				&yy_current_buffer->yy_ch_buf[number_to_move];

		while ( source > yy_current_buffer->yy_ch_buf )
			*--dest = *--source;

		yy_cp += (int) (dest - source);
		yy_bp += (int) (dest - source);
		yy_n_chars = yy_current_buffer->yy_buf_size;

		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
			YY_FATAL_ERROR( "flex scanner push-back overflow" );
		}

	*--yy_cp = (char) c;


	yytext_ptr = yy_bp;
	yy_hold_char = *yy_cp;
	yy_c_buf_p = yy_cp;
	}
#endif	/* ifndef YY_NO_UNPUT */


#ifdef __cplusplus
static int yyinput()
#else
static int input()
#endif
	{
	int c;

	*yy_c_buf_p = yy_hold_char;

	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
		{
		/* yy_c_buf_p now points to the character we want to return.
		 * If this occurs *before* the EOB characters, then it's a
		 * valid NUL; if not, then we've hit the end of the buffer.
		 */
		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
			/* This was really a NUL. */
			*yy_c_buf_p = '\0';

		else
			{ /* need more input */
			yytext_ptr = yy_c_buf_p;
			++yy_c_buf_p;

			switch ( yy_get_next_buffer() )
				{
				case EOB_ACT_END_OF_FILE:
					{
					if ( yywrap() )
						{
						yy_c_buf_p =
						yytext_ptr + YY_MORE_ADJ;
						return EOF;
						}

					if ( ! yy_did_buffer_switch_on_eof )
						YY_NEW_FILE;
#ifdef __cplusplus
					return yyinput();
#else
					return input();
#endif
					}

				case EOB_ACT_CONTINUE_SCAN:
					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
					break;

				case EOB_ACT_LAST_MATCH:
#ifdef __cplusplus
					YY_FATAL_ERROR(
					"unexpected last match in yyinput()" );
#else
					YY_FATAL_ERROR(
					"unexpected last match in input()" );
#endif
				}
			}
		}

	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
	*yy_c_buf_p = '\0';	/* preserve yytext */
	yy_hold_char = *++yy_c_buf_p;

	yy_current_buffer->yy_at_bol = (c == '\n');

	return c;
	}


#ifdef YY_USE_PROTOS
void yyrestart( FILE *input_file )
#else
void yyrestart( input_file )
FILE *input_file;
#endif
	{
	if ( ! yy_current_buffer )
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );

	yy_init_buffer( yy_current_buffer, input_file );
	yy_load_buffer_state();
	}


#ifdef YY_USE_PROTOS
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
#else
void yy_switch_to_buffer( new_buffer )
YY_BUFFER_STATE new_buffer;
#endif
	{
	if ( yy_current_buffer == new_buffer )
		return;

	if ( yy_current_buffer )
		{
		/* Flush out information for old buffer. */
		*yy_c_buf_p = yy_hold_char;
		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
		yy_current_buffer->yy_n_chars = yy_n_chars;
		}

	yy_current_buffer = new_buffer;
	yy_load_buffer_state();

	/* We don't actually know whether we did this switch during
	 * EOF (yywrap()) processing, but the only time this flag
	 * is looked at is after yywrap() is called, so it's safe
	 * to go ahead and always set it.
	 */
	yy_did_buffer_switch_on_eof = 1;
	}


#ifdef YY_USE_PROTOS
void yy_load_buffer_state( void )
#else
void yy_load_buffer_state()
#endif
	{
	yy_n_chars = yy_current_buffer->yy_n_chars;
	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
	yyin = yy_current_buffer->yy_input_file;
	yy_hold_char = *yy_c_buf_p;
	}


#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
#else
YY_BUFFER_STATE yy_create_buffer( file, size )
FILE *file;
int size;
#endif
	{
	YY_BUFFER_STATE b;

	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_buf_size = size;

	/* yy_ch_buf has to be 2 characters longer than the size given because
	 * we need to put in 2 end-of-buffer characters.
	 */
	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
	if ( ! b->yy_ch_buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_is_our_buffer = 1;

	yy_init_buffer( b, file );

	return b;
	}


#ifdef YY_USE_PROTOS
void yy_delete_buffer( YY_BUFFER_STATE b )
#else
void yy_delete_buffer( b )
YY_BUFFER_STATE b;
#endif
	{
	if ( ! b )
		return;

	if ( b == yy_current_buffer )
		yy_current_buffer = (YY_BUFFER_STATE) 0;

	if ( b->yy_is_our_buffer )
		yy_flex_free( (void *) b->yy_ch_buf );

	yy_flex_free( (void *) b );
	}


#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
#ifndef DOS
extern int isatty YY_PROTO(( int ));
#endif
#endif
#endif

#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
#else
void yy_init_buffer( b, file )
YY_BUFFER_STATE b;
FILE *file;
#endif


	{
	yy_flush_buffer( b );

	b->yy_input_file = file;
	b->yy_fill_buffer = 1;

#if YY_ALWAYS_INTERACTIVE
	b->yy_is_interactive = 1;
#else
#if YY_NEVER_INTERACTIVE
	b->yy_is_interactive = 0;
#else
	b->yy_is_interactive = 
#ifndef DOS
            file ? (isatty( fileno(file) ) > 0) : 
#endif
            0;
#endif
#endif
	}


#ifdef YY_USE_PROTOS
void yy_flush_buffer( YY_BUFFER_STATE b )
#else
void yy_flush_buffer( b )
YY_BUFFER_STATE b;
#endif

	{
	b->yy_n_chars = 0;

	/* We always need two end-of-buffer characters.  The first causes
	 * a transition to the end-of-buffer state.  The second causes
	 * a jam in that state.
	 */
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;

	b->yy_buf_pos = &b->yy_ch_buf[0];

	b->yy_at_bol = 1;
	b->yy_buffer_status = YY_BUFFER_NEW;

	if ( b == yy_current_buffer )
		yy_load_buffer_state();
	}


#ifndef YY_NO_SCAN_BUFFER
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
#else
YY_BUFFER_STATE yy_scan_buffer( base, size )
char *base;
yy_size_t size;
#endif
	{
	YY_BUFFER_STATE b;

	if ( size < 2 ||
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
		/* They forgot to leave room for the EOB's. */
		return 0;

	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );

	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
	b->yy_buf_pos = b->yy_ch_buf = base;
	b->yy_is_our_buffer = 0;
	b->yy_input_file = 0;
	b->yy_n_chars = b->yy_buf_size;
	b->yy_is_interactive = 0;
	b->yy_at_bol = 1;
	b->yy_fill_buffer = 0;
	b->yy_buffer_status = YY_BUFFER_NEW;

	yy_switch_to_buffer( b );

	return b;
	}
#endif


#ifndef YY_NO_SCAN_STRING
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_string( yyconst char *str )
#else
YY_BUFFER_STATE yy_scan_string( str )
yyconst char *str;
#endif
	{
	int len;
	for ( len = 0; str[len]; ++len )
		;

	return yy_scan_bytes( str, len );
	}
#endif


#ifndef YY_NO_SCAN_BYTES
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
#else
YY_BUFFER_STATE yy_scan_bytes( bytes, len )
yyconst char *bytes;
int len;
#endif
	{
	YY_BUFFER_STATE b;
	char *buf;
	yy_size_t n;
	int i;

	/* Get memory for full buffer, including space for trailing EOB's. */
	n = len + 2;
	buf = (char *) yy_flex_alloc( n );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );

	for ( i = 0; i < len; ++i )
		buf[i] = bytes[i];

	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;

	b = yy_scan_buffer( buf, n );
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );

	/* It's okay to grow etc. this buffer, and we should throw it
	 * away when we're done.
	 */
	b->yy_is_our_buffer = 1;

	return b;
	}
#endif


#ifndef YY_NO_PUSH_STATE
#ifdef YY_USE_PROTOS
static void yy_push_state( int new_state )
#else
static void yy_push_state( new_state )
int new_state;
#endif
	{
	if ( yy_start_stack_ptr >= yy_start_stack_depth )
		{
		yy_size_t new_size;

		yy_start_stack_depth += YY_START_STACK_INCR;
		new_size = yy_start_stack_depth * sizeof( int );

		if ( ! yy_start_stack )
			yy_start_stack = (int *) yy_flex_alloc( new_size );

		else
			yy_start_stack = (int *) yy_flex_realloc(
					(void *) yy_start_stack, new_size );

		if ( ! yy_start_stack )
			YY_FATAL_ERROR(
			"out of memory expanding start-condition stack" );
		}

	yy_start_stack[yy_start_stack_ptr++] = YY_START;

	BEGIN(new_state);
	}
#endif


#ifndef YY_NO_POP_STATE
static void yy_pop_state()
	{
	if ( --yy_start_stack_ptr < 0 )
		YY_FATAL_ERROR( "start-condition stack underflow" );

	BEGIN(yy_start_stack[yy_start_stack_ptr]);
	}
#endif


#ifndef YY_NO_TOP_STATE
static int yy_top_state()
	{
	return yy_start_stack[yy_start_stack_ptr - 1];
	}
#endif

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

#ifdef YY_USE_PROTOS
static void yy_fatal_error( yyconst char msg[] )
#else
static void yy_fatal_error( msg )
char msg[];
#endif
	{
	(void) fprintf( stderr, "%s\n", msg );
	exit( YY_EXIT_FAILURE );
	}



/* Redefine yyless() so it works in section 3 code. */

#undef yyless
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
		yytext[yyleng] = yy_hold_char; \
		yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
		yy_hold_char = *yy_c_buf_p; \
		*yy_c_buf_p = '\0'; \
		yyleng = n; \
		} \
	while ( 0 )


/* Internal utility routines. */

#ifndef yytext_ptr
#ifdef YY_USE_PROTOS
static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
#else
static void yy_flex_strncpy( s1, s2, n )
char *s1;
yyconst char *s2;
int n;
#endif
	{
	register int i;
	for ( i = 0; i < n; ++i )
		s1[i] = s2[i];
	}
#endif


#ifdef YY_USE_PROTOS
static void *yy_flex_alloc( yy_size_t size )
#else
static void *yy_flex_alloc( size )
yy_size_t size;
#endif
	{
	return (void *) malloc( size );
	}

#ifdef YY_USE_PROTOS
static void *yy_flex_realloc( void *ptr, yy_size_t size )
#else
static void *yy_flex_realloc( ptr, size )
void *ptr;
yy_size_t size;
#endif
	{
	/* The cast to (char *) in the following accommodates both
	 * implementations that use char* generic pointers, and those
	 * that use void* generic pointers.  It works with the latter
	 * because both ANSI C and C++ allow castless assignment from
	 * any pointer type to void*, and deal with argument conversions
	 * as though doing an assignment.
	 */
	return (void *) realloc( (char *) ptr, size );
	}

#ifdef YY_USE_PROTOS
static void yy_flex_free( void *ptr )
#else
static void yy_flex_free( ptr )
void *ptr;
#endif
	{
	free( ptr );
	}

#if YY_MAIN
int main()
	{
	yylex();
	return 0;
	}
#endif
#line 595 "l1.m"


#ifdef YY_USE_PROTOS
int PString(char *str)
#else
int PString(str)
char *str;
#endif
{
  unsigned long s;
  unsigned char *p = (unsigned char *) str;
  int i;
  int t = 0;
  

  if (pd > 0 &&
      dont_print[pd - 1])
    return 0;

  
  if ((s = strlen(p)) <= 0)
    return 1;
  processed += s;
  while (*p == '\n')
    {
      NextLine();
      ++p;
    }
  fprintf(out, "(");
  while (*p)
    {
      ++str_length;
      if (line_cut == 0)
	if (str_length > 550.*5./(3.*fontsize))
	  {
	    fprintf(out, ") s\n");
	    line--;
	    line_split = 1;
	    NextLine();
	    if(number_lines)
	      {
		fprintf(out, "%.2f 0 rmoveto\n", 6.*chw);
		str_length = 6;
	      }
	    fprintf(out,"(");
	  }
      if (*p == '\n')
      {
	fprintf(out, ") s\n");
	do
	  NextLine();
	while(*++p == '\n');
	if (!*p)
	  return 0;
	fprintf(out, "(");
	continue;
      }
      if (*p == '\f')
	{
	  fprintf(out, ") s\n");
	  NextPage();
	  fprintf(out, "(");
	  p++;
	  continue;
	}
      if (*p == '\t')
	{
	  t = tab - (str_length - 1 - number_lines * 6) % tab;
	  for (i = 0; i < t; i++)
	    fprintf(out, " ");
	  str_length += t - 1;
	  p++;
	  continue;
	}
      if (*p < 32)
	{
	  fprintf(out, "\\%03o", *p++);
	  continue;
	}
      if (*p > 127)
	{
	  if (nonlatin_text)
	    {
	      fprintf(out, ") s cf fno (");
	      do 
		fprintf(out, "\\%03o", *p++);
	      while (*p > 127);
	      fprintf(out, ") s sf (");
	    }
	  else
	    fprintf(out, "\\%03o", *p++);
	  continue;
	}
      if (*p == '(' || *p == ')' || *p == '\\')
	fprintf(out, "\\");
      fprintf(out, "%c", *p);
      p++;
    }
  fprintf(out, ") s\n");
  return 0;
}

char* PRatio()
{
  int r;
  int i;
  
  r = (10 * processed / b.st_size) + 1;
  for (i = 1; i <= 10 ; i++)
    ratio[i] = (i <= r) ? '.' : ' ';
  ratio[r + 1] = ')';
  return ratio;
} 

int PFlush()
{
  if (lc > 0)
    {
      buffer[lc] = '\0';
      PString(buffer);
      buffer[lc = 0] = '\0';
    }
  return 0;
}

#ifdef YY_USE_PROTOS
int PFill(char *c)
#else
int PFill(c)
char *c;
#endif
{
  if (*c == '\n' && YYSTATE == preps)
    BEGIN((nesting > 0)? INITIAL : nnested);
  else if (*c == '{')
    {
      if (++nesting > 0 && YYSTATE == nnested)
	BEGIN(INITIAL);
    }
  else if (*c == '}')
    {
      if (--nesting <= 0)
	{
	  if (YYSTATE == INITIAL)
	    BEGIN(nnested);
	  nesting = 0;
	  function_body_expected = 0;
	  if (cur_fun)
	    {
	      free(cur_fun);
	      cur_fun = NULL;
	    }
	}
    }
  buffer[lc++] = *c;
  if (lc == BUFL - 1)
    PFlush();
  return 0;
}

int PFunctionBox()
{
  struct fun *f;
  unsigned int i;
  float fs;
  
  if (first == NULL)
    return 1;
  fprintf(out, "\nmark\n");
  for (f = first, i = 1; f != NULL; f = f->next, i++)
    fprintf(out, "(%s) (%lu:%lu)\n", f->name, f->page, f->line);
  fs = (PAGE - 35.) / i;
  fprintf(out, "%.2f\n", (fs > 9.) ? 8. : fs - 1);
  fprintf(out, "FunctionBox\n");
  return 0;
}

int NextPage()
{
  x = PAGE - fontsize - spacing;
  line_on_page = 0;
  
  if(fun_box)
    PFunctionBox();
  if(fun_entry_exit && header && page>0 && cur_fun)
    fprintf(out, "\n(%s) OutFunction\n", cur_fun);
  
  switch (page % ppl)
    {
    case 0:
      if (page > 0 )
	{
	  fprintf(out, "\n%s showpage\n", (comment)? "currentgray" : "");
	}
      
      fprintf(out, "\n%%%%Page: %s%lu %lu\n\n",
	      (page  == 0 && fp_num > 1) ? "__" : "",
	      page / ppl + 1, total_page / ppl +1);
      if (page > 0 && comment)
	fprintf(out, "setgray\n");
      if (letter)
	fprintf(out, "0.93 0.93 scale 31 8 translate\n");
      switch(ppl)
	{
	case 1:
	  break;
	case 2:
	  fprintf(out, "595 4 translate 90 rotate 0.7 0.7 scale\n");
	  break;
	case 4:
	  fprintf(out, "0.47 0.47 scale 40 880 translate\n");
	}
      break;    
    case 1:
      fprintf(out, "590 0 translate\n");
      break;
    case 2:
      fprintf(out, "-590 -830 translate\n");
      break;
    case 3:
      fprintf(out, "590 0 translate\n");
    }
  fprintf(stderr, "%-25.25s Page %4lu, Column %1lu %s\r",
	  (fp_num > 0) ? fp[fp_cur] : "stdin",
	  page / ppl + 1,
	  page % ppl + 1,
	  (fp_num > 0) ? PRatio() : "");
  page++;
  total_page++;

  fprintf(out, "initclip ");
  if (header)
    {
      fprintf(out, "(%s) (%s)  DrawFrame gsave 0 setgray fhd 523 800 moveto \
(%8lu) s grestore\n",
	      date, (fp_num > 0) ? fp[fp_cur] : "stdin", page);
      if (fun_entry_exit && page > 0 && cur_fun)
	fprintf(out, "(%s) InFunction", cur_fun);
    }
  /*  fprintf(out," ver "); */

  fprintf(out, " clp\n");
  NextLine();
  return 0;
}

int NextLine()
{
  str_length = 0;
  if (x > 20 + fontsize)
    {
      if (lpp > 0)
	if(line_on_page++ == lpp)
	  {
	    NextPage();
	    return 0;
	  }
      fprintf(out, "%.2f nl ", x);
      line++;
      x -= fontsize + spacing;
      if (number_lines)
	{
	  if (line_split)
	    line_split=0;
	  else fprintf(out, "sn (%5lu) n\n", line);
	  /*       else fprintf(out,"sn (%5d,%d) n\n",YYSTATE,nesting); */
	  /* there may be any other useful info instead of line numbers such as
	     nesting depth */
	  str_length = 6;
	}
    }
  else NextPage();
  return 0;
}

int Version()
{
  fprintf(stderr, VerMsg, VERSION);
  exit(0);
}

int Help ()
{
  fprintf(stderr, HelpMsg);
  exit(0);
}

#ifdef YY_USE_PROTOS
int PCext (char *fn)
#else
int PCext (fn)
char *fn;
#endif
{
  int l = strlen(fn);

  return (
    ((l >= 2) && (!strcmp(&fn[l - 2], ".c")   || !strcmp(&fn[l - 2], ".h")))  ||
    ((l >= 3) && (!strcmp(&fn[l - 3], ".cc")  || !strcmp(&fn[l - 3], ".hh"))) ||
    ((l >= 4) && (!strcmp(&fn[l - 4], ".cpp") || !strcmp(&fn[l - 4], ".hpp"))));
}

#ifdef YY_USE_PROTOS
int IsDefined (char *s)
#else
int IsDefined (s)
char *s;
#endif
{
  int i;
  char *t = s;
  
  while (*t == ' ' || *t == '\t')
    t++;
  for (i = 0; i < defs_num; i++)
    if ((strlen(t) == strlen(defs[i])) &&
	! strcmp (t, defs[i]))
      return 1;
  return 0;
}

#ifdef YY_USE_PROTOS
int IsUndefined (char *s)
#else
int IsUndefined (s)
char *s;
#endif
{
  int i;
  char *t = s;
  
  while (*t == ' ' || *t == '\t')
    t++;
  for (i = 0; i < undefs_num; i++)
    if ((strlen(t) == strlen(undefs[i])) &&
	! strcmp (t, undefs[i]))
      return 1;
  return 0;
}

#undef yywrap

int yywrap()
{
  static FILE *file = NULL;
  struct fun *f;
  struct fun *p;

  if (fp_cur >= 0)		/* get done with current file */
    {
      if (file)
	fclose(file);
      PFlush();
      if(fun_box)
	PFunctionBox();
      if(fun_entry_exit && header && page>0 && cur_fun)
	fprintf(out, "\n(%s) OutFunction\n", cur_fun);
      fprintf(out, "\nshowpage\n");
      fprintf(stderr, "%-25.25s %4lu pages printed                           \n",
	      fp[fp_cur], (page-1)/ppl+1);
      
      total_page += (ppl - total_page % ppl) % ppl;
      page = 0;
      line = 0;
      nesting = 0;
      comment = 0;
      pd = 0;

      /* free function list */
      if (first)
	{
	  for (f = first; f; )
	    {
	      if (f->name)
		free(f->name);
	      p = f;
	      f = f->next;
	      free(p);
	    }	  
	  first = NULL;
	}
       if (cur_fun)
	 {
	   free(cur_fun);
	   cur_fun = NULL;
	 }
    }
  
  while (++fp_cur < fp_num)
    {
      if ((file = fopen(fp[fp_cur], "r")) == NULL)
	{
	  fprintf(stderr, "%-25.25s Could not open file for reading   \n",
		  fp[fp_cur]);
	  continue;
	}
      
      if (stat(fp[fp_cur], &b) == -1)
	fprintf(stderr, "%-25.25s Couldn't get the file information\n",
		fp[fp_cur]);
#ifndef DOS     
      if (S_ISDIR(b.st_mode))
	{
	  fprintf(stderr, "%-25.25s      Directory\n",
		  fp[fp_cur]);
	  continue;
	}
#endif      
      if (b.st_size == 0)
	{
	  fprintf(stderr, "%-25.25s      Empty file\n",
		  fp[fp_cur]);
	  continue;
	}
      if (last_modified)
	{
	  strcpy(date,ctime(&b.st_mtime));
	}
      else
	{
	  time(&t);
	  strcpy(date, ctime(&t));
	}

      yyrestart(file);

      BEGIN((noc ||
	     (c_ext && !PCext(fp[fp_cur]))) ? dont_highlight : nnested);
      processed = 0;
      date[24] = '\0';
      if (total_page > 0)
	NextPage();
      return 0;
    }
  return 1;
}

#define REENCODE(font) fprintf(out,"/%s /%s-iso isovec ReEncode\n",font,font)

#ifdef YY_USE_PROTOS
int main(int argc, char **argv)
#else
int main(argc, argv)
int argc;
char **argv;
#endif
{
  int i = 0;
  char *dftfont = NULL;
  char *preproc = NULL;
  char *comment = NULL;
  char *keyword = NULL;
  char *strings = NULL;
  char *type = NULL;
  char *lnumber = NULL;
  char *function = NULL;
  char *nonlatin = NULL;

  out = stdout;
  first = NULL;
  defs_num = 0;
  undefs_num = 0;

  fp = (char **) malloc (argc * sizeof(char *));
  defs = (char **) malloc (argc * sizeof(char *));
  undefs = (char **) malloc (argc * sizeof(char *));
  
  while (++i < argc)
    {
      if (argv[i][0] == '-')
	{
	  if (strlen(argv[i]) == 2)
	    {
	      switch (argv[i][1])
		{
		case '1': ppl = 1;					        break;
		case '2': ppl = 2;					        break;
		case '4': ppl = 4;					        break;
		case 'a': adjust_comments = 0;				        break;
		case 'b': fun_box = 0;					        break;
		case 'c': noc = 1;					        break;
		case 'e': fun_entry_exit = 0;				        break;
		case 'i': iso = 0;					        break;
		case 'k': ext = 0;					        break;
		case 'm': last_modified = 0;				        break;
		case 'n': number_lines = 0;				        break;
		case 'r': frame = 1;					        break;
		case 'u': header = 0;					        break;
		case 'v': Version();					        break;
		case 'w': line_cut = 1;					        break;
		case 'x': c_ext = 1;					        break;
		case '?': case 'h': Help();                                     break;
		default: {
		  if(++i < argc && argv[i][0] != '-')
		    {
		      switch(argv[i-1][1])
			{
			case 'o': if ((out = fopen(argv[i], "w")) == NULL)
				    {
				      fprintf(stderr,
					      "Couldn't open file %s for writing\n",
					      argv[i]);
				      exit(0);
				    }                                           break;
			case 'p': if (!strcmp(argv[i], "Letter")) letter = 1;	break;
			case 't': tab = abs(atoi (argv[i])); 			break;
			case 'F': DUP(dftfont,    argv[i]);		        break;
			case 'P': DUP(preproc,    argv[i]);		        break;
			case 'C': DUP(comment,    argv[i]);		        break;
			case 'U': DUP(function,   argv[i]);		        break;
			case 'S': DUP(strings,    argv[i]);		        break;
			case 'T': DUP(type,       argv[i]);                     break;
			case 'K': DUP(keyword,    argv[i]);		        break;
			case 'N': DUP(lnumber,    argv[i]);		        break;
			case 'X': DUP(nonlatin,   argv[i]);		        break;
			case 'd': sscanf(argv[i], "%f", &dim_comment);		break;
			case 'f': sscanf(argv[i], "%f", &fontsize); 		break;
			case 's': sscanf(argv[i], "%f", &spacing);		break;
			case 'l': lpp = abs(atoi(argv[i]));			break;
			case '_':
			  if (!strcmp(argv[i], "none"))
			    fun_highlight_id = 0;
			  else if (!strcmp(argv[i], "box"))
			    fun_highlight_id = 1;
			  else
			    fun_highlight_id = 2;
			  break;
			default:  Help();
			}
		    } else
		      Help();
		}
		}
	    }
	  else
	    {
	      if (argv[i][1] == 'D')
		{
		  DUP (defs[defs_num], & argv[i][2]);
		  defs_num++;
		}
	      else if (argv[i][1] == 'U')
		{
		  DUP (undefs[undefs_num], & argv[i][2]);
		  undefs_num++;
		}
	      else
		Help ();
	    }
	}
      else
	{
	  DUP(fp[fp_num], argv[i]);
	  fp_num++;
	}
    }

  BEGIN((noc) ? dont_highlight : nnested);

  if (fp_num > 0)		/* files to print */
    {
      if (yywrap())
	{
	  fprintf(stderr, "Nothing to print. Exiting...                    \n");
	  exit(1);
	}
    }
  else
    {
    time(&t);
    strcpy(date, ctime(&t));
    date[24] = '\0';
    }

  chw = 3. * fontsize / 5.;

  if (!dftfont)
    { DUP(dftfont, DEFAULT); }
  if (!preproc)
    { DUP(preproc, PREPROC); }
  if (!comment)
    { DUP(comment, COMMENT); }
  if (!keyword)
    { DUP(keyword, KEYWORD); }
  if (!strings)
    { DUP(strings, STRINGS); }
  if (!type)
    { DUP(type, TYPE); }
  if (!lnumber)
    { DUP(lnumber, LNUMBER); }
  if (!function)
    { DUP(function, FUNCTION); }
  if (nonlatin)
    {
      iso = 0;
      nonlatin_text = 1;
    }

  fprintf(out, "%%!PS-Adobe-2.0\n%%%%Creator: c2ps version %s\n", VERSION);
  fprintf(out, "%%%%Orientation: %s\n", (ppl == 2) ? "Landscape" : "Portrait");
  fprintf(out, "%%%%Pages: (atend)\n");
  fprintf(out, "%%%%DocumentNeededFonts: Times-BoldItalic Times-Bold %s %s %s",
	  dftfont,
	  (number_lines || fun_box || fun_entry_exit) ? lnumber : "",
	  (nonlatin) ? nonlatin : "");
  if (!noc)
    fprintf(out, " %s %s %s %s %s %s",
	    keyword, strings, type, preproc, comment, function);
  fprintf(out, "\n%%%%DocumentMedia: %s\n%%%%EndComments\n\n",
	    (letter) ? "Letter 612 792" : "A4 595 842");
  if (iso)
    {
      fprintf(out, ISO);
      REENCODE(dftfont);
      if (!noc)
	{
	  REENCODE(strings);
	  REENCODE(comment);
	 }
    }
  
  fprintf(out, "/s {show} bind def /nl { 20 exch moveto } def\n ");
  fprintf(out, "/sf {setfont} bind def /cf {currentfont} bind def\n");
  fprintf(out, VERS, VERSION);
  fprintf(out, "/fdf { /%s%s findfont %.2f scalefont setfont } def\n",
	  dftfont, (iso) ? "-iso" : "", fontsize);
  fprintf(out, "/fhd { /Times-Bold findfont 16 scalefont setfont } def\n");
  if (nonlatin)
    fprintf(out, "/fno { /%s findfont %.2f scalefont setfont } def\n",
	    nonlatin, fontsize);  
  if (number_lines)
    {
      fprintf(out, "/fnu { /%s findfont %.2f scalefont setfont } def\n",
	      lnumber, fontsize);
      fprintf(out, "/sn { gsave fnu 0 setgray } def /n { s grestore "
	      "%.2f 0 rmoveto } def\n",
	      6. * chw);
    }
  if (!noc)
    {
      fprintf(out, "/fco { /%s%s findfont %.2f scalefont sf } def\n",
	      comment, (!noc && iso) ? "-iso" : "", fontsize);
      fprintf(out, "/fke { /%s findfont %.2f scalefont sf } def\n", keyword, fontsize);
      fprintf(out, "/ffu { /%s findfont %.2f scalefont sf } def\n", function, fontsize);
      fprintf(out, "/fty { /%s findfont %.2f scalefont sf } def\n", type, fontsize);
      fprintf(out, "/fst { /%s%s findfont %.2f scalefont sf } def\n",
	      strings, (!noc && iso) ? "-iso" : "", fontsize);
      fprintf(out, "/fpr { /%s findfont %.2f scalefont sf } def\n\n", preproc, fontsize);
      
      if (fun_entry_exit)
	fprintf(out, "%s\n", INOUTFUNCTIONS);
      if (fun_box)
	fprintf(out, "%s\n", FUNCTIONBOX);
    }
  
  fprintf(out, "%s\n", FILLEDBOX);

  fprintf(out, "/Modified {\n%s\n} def\n",
	  (last_modified && header && fp_num > 0) ? 
	  "/Times-Bold findfont 24 scalefont setfont\n"
	  "(MODIFIED) dup stringwidth pop 2 div neg 297.5 add 797 moveto\n"
	  "currentpoint 1 setgray 0.5 -0.5 rmoveto 2 index s moveto\n"
	  "currentpoint 0.84 setgray -0.5 0.5 rmoveto 2 index s moveto \n"
	  "0.95 setgray s 0 setgray\n" : "");
  fprintf(out, "/DrawFrame {\n");
  if (header)
    {
      fprintf(out, "  gsave\n0 setgray\n");
      fprintf(out, "  555 25 20 795 FilledBox\n");
      fprintf(out, "  /Times-BoldItalic findfont 16 scalefont setfont\n");
      fprintf(out, "  gsave newpath 20 795 moveto 230 795 lineto 230 820\n");
      fprintf(out, "  lineto 20 820 lineto closepath clip 30 800 moveto s \n");
      fprintf(out, "  grestore\n");
      fprintf(out, "  Modified\n");
      fprintf(out, "  /Times-Bold findfont 9 scalefont setfont\n"
	      "dup stringwidth pop 2 div neg 297.5 add 800 moveto s\n");
      fprintf(out, "  grestore\n");
    }
  fprintf(out, "} def\n");
  
  fprintf(out, "106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen\n");
  fprintf(out, "/clp { newpath 20 820 moveto 577 820 lineto 577 20\n");
  fprintf(out, "lineto 20 20 lineto closepath clip %s } def fdf\n",
	  (frame) ? "0 setgray 0.05 setlinewidth stroke" : "");
  NextPage();
  
  yylex();

  if (fp_num == 0)
    {
      PFlush();
      if(fun_box)
	PFunctionBox();
      if(fun_entry_exit && header && page>0 && cur_fun)
	fprintf(out, "\n(%s) OutFunction\n", cur_fun);
      fprintf(out, "\nshowpage\n");
      fprintf(stderr, "%-25.25s %4lu pages printed                           \n",
	      "stdin", (page - 1) / ppl + 1);
    }
  else
    if (fp_num > 1)
      fprintf(stderr,
	      "____________________________________________\n"
	      "%-25.25s %4lu pages printed                 \n",
	      "Total", (total_page - 1) / ppl + 1);

  fprintf(out, "\n%%%%Pages: %lu\n", (total_page - 1) / ppl + 1);
  fclose(out);
  return 0;
}


